35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
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)") |