2026-rff_mp/SavelevMI/docs/data/1-st-exersize/plot_results.py

43 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Загружает CSV с результатами и строит столбчатую диаграмму сравнения
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def main():
df = pd.read_csv('experiment_results.csv')
mean_times = df.groupby(['Structure', 'Mode'])[['Insert (sec)', 'Search (sec)', 'Delete (sec)']].mean().reset_index()
structures = mean_times['Structure'].unique()
operations = ['Insert (sec)', 'Search (sec)', 'Delete (sec)']
titles = ['Insertion', 'Search', 'Deletion']
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
for ax, op, title in zip(axes, operations, titles):
x = np.arange(len(structures))
width = 0.35
random_vals = []
sorted_vals = []
for s in structures:
rand = mean_times[(mean_times['Structure'] == s) & (mean_times['Mode'] == 'random')]
sort = mean_times[(mean_times['Structure'] == s) & (mean_times['Mode'] == 'sorted')]
random_vals.append(rand[op].values[0] if not rand.empty else 0)
sorted_vals.append(sort[op].values[0] if not sort.empty else 0)
ax.bar(x - width/2, random_vals, width, label='Random order')
ax.bar(x + width/2, sorted_vals, width, label='Sorted order')
ax.set_xticks(x)
ax.set_xticklabels(structures)
ax.set_ylabel('Time (seconds)')
ax.set_title(title)
ax.legend()
plt.tight_layout()
plt.savefig('performance_comparison.png', dpi=150)
plt.show()
if __name__ == '__main__':
main()