forked from UNN/2026-rff_mp
[1] 1-st-exercise #2
61
VolkovVA/docs/data/grafic.py
Normal file
61
VolkovVA/docs/data/grafic.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
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()
|
||||
Loading…
Reference in New Issue
Block a user