From d0cc119bfbe20cce19d26c693b12e8dcd59856d6 Mon Sep 17 00:00:00 2001 From: Your Name <you@example.com> Date: Wed, 1 Jan 2025 16:55:36 -0300 Subject: [PATCH] Fix plot --- .../medicoes/script_plot_mestrado.py | 64 +++++++++++-------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py b/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py index 4f8bfe76..60d89447 100644 --- a/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py +++ b/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py @@ -21,10 +21,10 @@ ue_dataframes = {} for scenario in scenarios: ue_dataframes[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))] - for cap_conf in cap_confs: - ue_dataframes[scenario][cap_conf] = {} - cap_path = scenario_path + '/' + cap_conf + cap_confs_list = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] + for cap_conf_folder in cap_confs_list: + ue_dataframes[scenario][cap_conf_folder] = {} + 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))] for ue in ues: data = [] @@ -45,7 +45,6 @@ for scenario in scenarios: if "[ 3]" in line and "sec" in line and "MBytes" in line: parts = line.split() count += 1 - print(parts) if count < 10: data.append({ "Interval": count, @@ -66,44 +65,57 @@ for scenario in scenarios: }) else: break - ue_dataframes[scenario][cap_conf][ue] = pd.DataFrame(data) + ue_dataframes[scenario][cap_conf_folder][ue] = pd.DataFrame(data) for scenario in scenarios: + conf_list = [] pl_ue1 = [] pl_ue2 = [] 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 = sorted(cap_confs, key=lambda x: (x == 'no_slicing', x)) - for cap_conf in cap_confs: - plt.plot(ue_dataframes[scenario][cap_conf]['ue2']["Interval"], ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"], marker="o", label="UE2", color = "blue", linestyle="-") - plt.plot(ue_dataframes[scenario][cap_conf]['ue1']["Interval"], ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"], marker="o", label="UE1", color = "red", linestyle="--") - y_ticks = np.arange(0, max(ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"].max(), - ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"].max()) + 10, 10) # Intervalo de 2 Mbps - plt.yticks(y_ticks) # Define os valores do eixo Y com intervalos mais detalhados - plt.title(scenario) + 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_list = sorted(cap_confs_list, key=lambda x: (x == 'no_slicing', x)) + with open(os.path.join(scenario_path, "scenario_description.txt"), 'r') as file: + scenario_file = file.read().split("\n") + scenario_info = {item.split(':', 1)[0].strip(): item.split(':', 1)[1].strip() for item in scenario_file if item} + for cap_conf_folder in cap_confs_list: + cap_path = scenario_path + '/' + cap_conf_folder + with open(os.path.join(cap_path, "cap_conf_description.txt"), 'r') as file: + 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.ylabel("Taxa oferecida (Mbps)") + plt.ylabel("Taxa efetiva (Mbps)") 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.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() - pl_ue1.append((ue_dataframes[scenario][cap_conf]['ue1']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf]['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_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_folder]['ue2']["PacketsLost"].sum()/ue_dataframes[scenario][cap_conf_folder]['ue2']["TotalPackets"].sum())*100) plt.show() - # 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 - # 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_ue2, width=largura, label='UE2', color='blue') # Barras para UE2 + 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=f"UE2 (Banda: {scenario_info['UE2_bandwidth']} Mbps)", color='blue') # Barras para UE2 # 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.title('Perda de Pacotes para Diferentes Configurações de Capacidade') - plt.xticks(x, cap_confs) # Ajustar rótulos do eixo x + plt.title('Perda de Pacotes (%) para Diferentes Configurações de Capacidade') + plt.xticks(x, conf_list) # Ajustar rótulos do eixo x plt.legend() # Adicionar legenda # Exibir o gráfico -- GitLab