Skip to content
Snippets Groups Projects
Commit d0cc119b authored by Your Name's avatar Your Name
Browse files

Fix plot

parent 8ae2b114
No related branches found
No related tags found
No related merge requests found
...@@ -21,10 +21,10 @@ ue_dataframes = {} ...@@ -21,10 +21,10 @@ ue_dataframes = {}
for scenario in scenarios: for scenario in scenarios:
ue_dataframes[scenario] = {} ue_dataframes[scenario] = {}
scenario_path = main_folder + scenario scenario_path = main_folder + scenario
cap_confs = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] cap_confs_list = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))]
for cap_conf in cap_confs: for cap_conf_folder in cap_confs_list:
ue_dataframes[scenario][cap_conf] = {} ue_dataframes[scenario][cap_conf_folder] = {}
cap_path = scenario_path + '/' + cap_conf cap_path = scenario_path + '/' + cap_conf_folder
ues = [name for name in os.listdir(cap_path) if os.path.isdir(os.path.join(cap_path, name))] ues = [name for name in os.listdir(cap_path) if os.path.isdir(os.path.join(cap_path, name))]
for ue in ues: for ue in ues:
data = [] data = []
...@@ -45,7 +45,6 @@ for scenario in scenarios: ...@@ -45,7 +45,6 @@ for scenario in scenarios:
if "[ 3]" in line and "sec" in line and "MBytes" in line: if "[ 3]" in line and "sec" in line and "MBytes" in line:
parts = line.split() parts = line.split()
count += 1 count += 1
print(parts)
if count < 10: if count < 10:
data.append({ data.append({
"Interval": count, "Interval": count,
...@@ -66,44 +65,57 @@ for scenario in scenarios: ...@@ -66,44 +65,57 @@ for scenario in scenarios:
}) })
else: else:
break break
ue_dataframes[scenario][cap_conf][ue] = pd.DataFrame(data) ue_dataframes[scenario][cap_conf_folder][ue] = pd.DataFrame(data)
for scenario in scenarios: for scenario in scenarios:
conf_list = []
pl_ue1 = [] pl_ue1 = []
pl_ue2 = [] pl_ue2 = []
scenario_path = main_folder + scenario scenario_path = main_folder + scenario
cap_confs = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] ## Configuração da capacidade dos slices cap_confs_list = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] ## Configuração da capacidade dos slices
cap_confs = sorted(cap_confs, key=lambda x: (x == 'no_slicing', x)) cap_confs_list = sorted(cap_confs_list, key=lambda x: (x == 'no_slicing', x))
for cap_conf in cap_confs: with open(os.path.join(scenario_path, "scenario_description.txt"), 'r') as file:
plt.plot(ue_dataframes[scenario][cap_conf]['ue2']["Interval"], ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"], marker="o", label="UE2", color = "blue", linestyle="-") scenario_file = file.read().split("\n")
plt.plot(ue_dataframes[scenario][cap_conf]['ue1']["Interval"], ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"], marker="o", label="UE1", color = "red", linestyle="--") scenario_info = {item.split(':', 1)[0].strip(): item.split(':', 1)[1].strip() for item in scenario_file if item}
y_ticks = np.arange(0, max(ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"].max(), for cap_conf_folder in cap_confs_list:
ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"].max()) + 10, 10) # Intervalo de 2 Mbps cap_path = scenario_path + '/' + cap_conf_folder
plt.yticks(y_ticks) # Define os valores do eixo Y com intervalos mais detalhados with open(os.path.join(cap_path, "cap_conf_description.txt"), 'r') as file:
plt.title(scenario) cap_conf_description = file.read().split("\n")
cap_conf_info = {item.split(':', 1)[0].strip(): item.split(':', 1)[1].strip() for item in cap_conf_description if item}
plt.plot(ue_dataframes[scenario][cap_conf_folder]['ue2']["Interval"], ue_dataframes[scenario][cap_conf_folder]['ue2']["Bandwidth"], marker="o", label=f"UE2 (Banda: {scenario_info['UE2_bandwidth']} Mbps)", color = "blue", linestyle="-")
plt.plot(ue_dataframes[scenario][cap_conf_folder]['ue1']["Interval"], ue_dataframes[scenario][cap_conf_folder]['ue1']["Bandwidth"], marker="o", label=f"UE1 (Banda: {scenario_info['UE1_bandwidth']} Mbps)", color = "red", linestyle="--")
y_ticks = np.arange(0, max(ue_dataframes[scenario][cap_conf_folder]['ue2']["Bandwidth"].max(),
ue_dataframes[scenario][cap_conf_folder]['ue1']["Bandwidth"].max()) + 10, 10) # Intervalo de 2 Mbps
plt.yticks(y_ticks) # Define os valores do eixo Y com intervalos mais detalhados
if cap_conf_info['UE1_slice'] != '-':
plt.title(f"Taxa Efetiva de Usuários Móveis: UE1 no Slice 1 ({cap_conf_info['UE1_slice']}% dos Recursos) e UE2 no Slice 2 ({cap_conf_info['UE2_slice']}% dos Recursos)")
else:
plt.title(f"Taxa Efetiva de Usuários sem configuração dos slices")
plt.xlabel("Tempo (s)") plt.xlabel("Tempo (s)")
plt.ylabel("Taxa oferecida (Mbps)") plt.ylabel("Taxa efetiva (Mbps)")
plt.grid(which="both", linestyle="--", linewidth=0.5, alpha=0.7) # Grelha mais sutil plt.grid(which="both", linestyle="--", linewidth=0.5, alpha=0.7) # Grelha mais sutil
plt.tight_layout() # Garante que todos os elementos estejam visíveis plt.tight_layout() # Garante que todos os elementos estejam visíveis
plt.legend() plt.legend()
if cap_conf_info['UE1_slice'] != '-' and cap_conf_info['UE2_slice'] != '-':
conf_list.append(f"Conf. {cap_conf_info['UE1_slice']}% / {cap_conf_info['UE2_slice']}%")
else:
conf_list.append(f'Conf. No slice')
plt.tight_layout() plt.tight_layout()
pl_ue1.append((ue_dataframes[scenario][cap_conf]['ue1']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf]['ue1']["TotalPackets"].sum())*100) pl_ue1.append((ue_dataframes[scenario][cap_conf_folder]['ue1']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf_folder]['ue1']["TotalPackets"].sum())*100)
pl_ue2.append((ue_dataframes[scenario][cap_conf]['ue2']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf]['ue2']["TotalPackets"].sum())*100) pl_ue2.append((ue_dataframes[scenario][cap_conf_folder]['ue2']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf_folder]['ue2']["TotalPackets"].sum())*100)
plt.show() plt.show()
# Configurar a posição das barras no eixo x # Configurar a posição das barras no eixo x
x = np.arange(len(cap_confs)) # Posições das scenarios x = np.arange(len(conf_list)) # Posições das scenarios
largura = 0.4 # Largura das barras largura = 0.4 # Largura das barras
# Criar as barras # Criar as barras
plt.bar(x - largura / 2, pl_ue1, width=largura, label='UE1', color='red') # Barras para UE1 plt.bar(x - largura / 2, pl_ue1, width=largura, label=f"UE1 (Banda: {scenario_info['UE1_bandwidth']} Mbps)", color='red') # Barras para UE1
plt.bar(x + largura / 2, pl_ue2, width=largura, label='UE2', color='blue') # Barras para UE2 plt.bar(x + largura / 2, pl_ue2, width=largura, label=f"UE2 (Banda: {scenario_info['UE2_bandwidth']} Mbps)", color='blue') # Barras para UE2
# Adicionar rótulos e título # Adicionar rótulos e título
plt.xlabel('Diferentes configurações de capacidade') plt.xlabel('Diferentes configurações de capacidade (Slice 1 / Slice 2)')
plt.ylabel('Perda de pacote (%)') plt.ylabel('Perda de pacote (%)')
plt.title('Perda de Pacotes para Diferentes Configurações de Capacidade') plt.title('Perda de Pacotes (%) para Diferentes Configurações de Capacidade')
plt.xticks(x, cap_confs) # Ajustar rótulos do eixo x plt.xticks(x, conf_list) # Ajustar rótulos do eixo x
plt.legend() # Adicionar legenda plt.legend() # Adicionar legenda
# Exibir o gráfico # Exibir o gráfico
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment