Smart-Traffic-openenv / visualize.py
Aryansabasana
Cleanup: Remove all comments and docstrings from Python and config files
7a78f7e
Raw History Blame Contribute Delete
2.14 kB
import matplotlib.pyplot as plt
import numpy as np
import os
import random
def generate_graph(scores, seed, output_path="optimization_results.png"):
labels = ['Easy', 'Medium', 'Hard', 'Overall']
optimized_values = [
scores.get('Easy', 0),
scores.get('Medium', 0),
scores.get('Hard', 0),
scores.get('Overall', 0)
]
random.seed(seed)
baseline_values = [
round(max(0.1, optimized_values[0] - random.uniform(0.01, 0.05)), 2),
round(max(0.1, optimized_values[1] - random.uniform(0.25, 0.45)), 2),
round(max(0.1, optimized_values[2] - random.uniform(0.25, 0.45)), 2),
round(max(0.1, optimized_values[3] - random.uniform(0.15, 0.35)), 2)
]
x = np.arange(len(labels))
width = 0.35
fig, ax = plt.subplots(figsize=(10, 6))
rects1 = ax.bar(x - width/2, baseline_values, width, label='Baseline Agent', color='#FF6B6B')
rects2 = ax.bar(x + width/2, optimized_values, width, label='Optimized Agent', color='#4ECDC4')
ax.set_ylabel('Performance Score (0.0 - 1.0)', fontsize=12, fontweight='bold')
ax.set_title(f'Traffic Optimization Performance (Seed: {seed})', fontsize=14, fontweight='bold', pad=20)
ax.set_xticks(x)
ax.set_xticklabels(labels, fontsize=11)
ax.legend(fontsize=11, loc='upper left')
ax.set_ylim(0, 1.15)
ax.grid(axis='y', linestyle='--', alpha=0.7)
def autolabel(rects):
for rect in rects:
height = rect.get_height()
ax.annotate(f'{height:.2f}',
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3),
textcoords="offset points",
ha='center', va='bottom', fontweight='bold')
autolabel(rects1)
autolabel(rects2)
fig.tight_layout()
plt.savefig(output_path, dpi=300)
plt.close(fig)
return output_path
if __name__ == "__main__":
mock_scores = {'Easy': 0.95, 'Medium': 0.92, 'Hard': 0.96, 'Overall': 0.94}
generate_graph(mock_scores, 42)
print("Graph generated: optimization_results.png")