From df10b20f41f3e8ac69c9060c3c2861d22c4d7cd4 Mon Sep 17 00:00:00 2001 From: volkovva Date: Sun, 24 May 2026 20:50:09 +0300 Subject: [PATCH] =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VolkovVA/docs/data/grafic.py | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 VolkovVA/docs/data/grafic.py diff --git a/VolkovVA/docs/data/grafic.py b/VolkovVA/docs/data/grafic.py new file mode 100644 index 0000000..ae5e74d --- /dev/null +++ b/VolkovVA/docs/data/grafic.py @@ -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() \ No newline at end of file