import csv import matplotlib.pyplot as plt from collections import defaultdict pth = r"C:\Users\vva26\2026-rff_mp\VolkovVA\docs\data\results.csv" grf = r"C:\Users\vva26\2026-rff_mp\VolkovVA\docs\performance_chart.png" dct = defaultdict(lambda: defaultdict(list)) with open(pth, "r", encoding="utf-8") as f: rdr = csv.reader(f) nxt = next(rdr) for row in rdr: if not row: continue str, mod, ope, tim = row key = f"{str}\n({ope})" dct[key][mod].append(float(tim)) lbl = [] rnd = [] srt = [] for key, mds in dct.items(): lbl.append(key) avg_rnd = sum(mds["случайный"]) / len(mds["случайный"]) if mds["случайный"] else 0 avg_srt = sum(mds["отсортированный"]) / len(mds["отсортированный"]) if mds["отсортированный"] else 0 rnd.append(avg_rnd) srt.append(avg_srt) idx = range(len(lbl)) wth = 0.35 x_rnd = [] for i in idx: x_rnd.append(i - wth/2) x_srt = [] for i in idx: x_srt.append(i + wth/2) fig, axs = plt.subplots(figsize=(11, 6)) bar1 = axs.bar(x_rnd, rnd, wth, label='Случайные данные', color='#3498db') bar2 = axs.bar(x_srt, srt, wth, label='Отсортированные данные', color='#e74c3c') axs.set_title('Сравнение скорости операций в различных структурах данных', fontsize=13, fontweight='bold', pad=15) axs.set_xticks(idx) axs.set_xticklabels(lbl, rotation=15, ha='right', fontsize=10) axs.legend(fontsize=10) axs.grid(axis='y', linestyle='--', alpha=0.5) axs.set_yscale('log') axs.set_ylabel('Время выполнения в сек (Логарифмическая шкала)', fontsize=11) plt.tight_layout() plt.savefig(grf, dpi=300) print(f"\n[OK] График сохранен в: {grf}") plt.show()