Source code for src.graph_generator_3graphs
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
[docs]
def graph(file_kotzur, file_cluster, file_base, representative_days, blocks_per_day):
# Ler os dados
data_kotzur = pd.read_csv(file_kotzur)
data_cluster = pd.read_csv(file_cluster)
data_base = pd.read_csv(file_base)
# Preparar dados para o gráfico do arquivo "Cluster"
# Pegando a primeira hora de cada dia nas simulações com 24h (8760 pontos -> 365 dias, cada dia tem 24 pontos)
cluster_storage_level = data_cluster['StorageLevelTSStart'][::blocks_per_day]
# Índices dos dias especificados (ajustados para índice baseado em zero)
indices = np.array(representative_days) - 1
# Valores dos dias especificados
values = [data_base['StorageLevelTSStart'][i * blocks_per_day] for i in range(len(representative_days))]
# Configurar os gráficos combinados para Kotzur, Cluster e Base
fig, axs = plt.subplots(3, 1, figsize=(12, 18))
# Gráfico para Kotzur
axs[0].plot(data_kotzur['StorageLevelChronoDayStart'], label='Kotzur', color='blue')
axs[0].set_title('Kotzur Storage Level')
axs[0].set_xlim(0, 365)
axs[0].set_xlabel('Days')
axs[0].set_ylabel('Storage Level')
axs[0].grid(True)
# Gráfico para Cluster
axs[1].plot(range(365), cluster_storage_level, label='Cluster', color='green')
axs[1].set_title('Cluster Storage Level')
axs[1].set_xlim(0, 365)
axs[1].set_xlabel('Days')
axs[1].set_ylabel('Storage Level')
axs[1].grid(True)
# Gráfico para Base (conectando os pontos especificados)
axs[2].plot(indices, values, label='Base', color='red', marker='o', linestyle='-')
axs[2].set_title('Base Storage Level')
axs[2].set_xlim(0, 365)
axs[2].set_xlabel('Days')
axs[2].set_ylabel('Storage Level')
axs[2].grid(True)
# Ajustar o layout
plt.tight_layout()
plt.subplots_adjust(top=0.93, hspace=0.4)
plt.show()
return fig