[1] create bar charts for experiment results

This commit is contained in:
KislyuninED 2026-05-14 01:06:33 +00:00
parent 164bcbb260
commit f387b9020b

View File

@ -0,0 +1,35 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('results.csv')
mean_df = df.groupby(['Structure','Mode','Operation'])['Time_sec'].mean().reset_index()
fig, axes = plt.subplots(1, 3, figsize=(14,5))
operations = ['insert','find','delete']
titles = ['Insertion', 'Search', 'Deletion']
for ax, op, title in zip(axes, operations, titles):
subset = mean_df[mean_df['Operation'] == op]
structures = subset['Structure'].unique()
x = np.arange(len(structures))
width = 0.35
random_vals = []
sorted_vals = []
for s in structures:
r = subset[(subset['Structure']==s) & (subset['Mode']=='random')]['Time_sec'].values
s_vals = subset[(subset['Structure']==s) & (subset['Mode']=='sorted')]['Time_sec'].values
random_vals.append(r[0] if len(r) else 0)
sorted_vals.append(s_vals[0] if len(s_vals) else 0)
ax.bar(x - width/2, random_vals, width, label='random')
ax.bar(x + width/2, sorted_vals, width, label='sorted')
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.png', dpi=150)
plt.show()
print("График сохранён (performance.png)")