Skip to content
Snippets Groups Projects
script_plot_mestrado.py 3.01 KiB
Newer Older
Your Name's avatar
Fix
Your Name committed
import pandas as pd
import matplotlib.pyplot as plt
import os 
import numpy as np
# Leitura do arquivo

main_folder = "./"

scenarios = [name for name in os.listdir(main_folder) if os.path.isdir(os.path.join(main_folder, name))]

print(scenarios)

ue_dataframes = {}

for scenario in scenarios:
    ue_dataframes[scenario] = {}
    scenario_path = main_folder + scenario
    ues = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))]
    for ue in ues: 
        data = []

        # Caminho de cada usuário

        ue_path = scenario_path + '/' + ue + '/' + 'job_1.txt'
        
        print(ue_path)
        # Organização do dataframe

        with open(ue_path, 'r') as file:
            count = 0
            data.append({
                            "Interval": 0,
                            "Transfer": 0,
                            "Bandwidth": 0,
                            "Jitter": 0,
                            "Lost/Total Datagrams": 0
                        })
            for line in file:
                if "[  3]" in line and "sec" in line and "MBytes" in line:
                    parts = line.split()
                    count += 1
                    if count < 10: 
                        data.append({
                            "Interval": count,
                            "Transfer": parts[5],
                            "Bandwidth": float(parts[7]),
                            "Jitter": parts[9] if len(parts) > 6 else None,
                            "Lost/Total Datagrams": parts[-2] if '/' in parts [-2] else parts[-3] + parts[-2]
                        })
                    elif count <= 60:
                        data.append({
                            "Interval": count,
                            "Transfer": parts[4],
                            "Bandwidth": float(parts[6]),
                            "Jitter": parts[8] if len(parts) > 6 else None,
                            "Lost/Total Datagrams": parts[-2] if '/' in parts [-2] else parts[-3] + parts[-2]
                        })
                    else:
                        break
        # Criação do DataFrame
        ue_dataframes[scenario][ue] = pd.DataFrame(data)

print(ue_dataframes['no_slicing']['ue2']["Bandwidth"])
for scenario in scenarios:
    plt.plot(ue_dataframes[scenario]['ue2']["Interval"], ue_dataframes[scenario]['ue2']["Bandwidth"], marker="o", label="Bandwidth", color = "blue")
    plt.plot(ue_dataframes[scenario]['ue1']["Interval"], ue_dataframes[scenario]['ue1']["Bandwidth"], marker="o", label="Bandwidth", color = "red")
    y_ticks = np.arange(0, max(ue_dataframes[scenario]['ue2']["Bandwidth"].max(),
                               ue_dataframes[scenario]['ue1']["Bandwidth"].max()) + 10, 2)  # Intervalo de 2 Mbps
    plt.yticks(y_ticks)  # Define os valores do eixo Y com intervalos mais detalhados  
    plt.title(scenario)
    plt.xlabel("Time (s)")
    plt.ylabel("Bandwidth (Mbps)")
    plt.grid(True)
    plt.legend()
    plt.tight_layout()

    #Exibe o gráfico

    plt.show()