Удалить SmirnovaVYu/docs/data/visualize.py
This commit is contained in:
parent
1818154b9a
commit
c1d8b9d5fe
|
|
@ -1,77 +0,0 @@
|
|||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def plot_results(csv_file='experiment_results.csv'):
|
||||
|
||||
if not Path(csv_file).exists():
|
||||
print(f"❌ {csv_file} не найден. Сначала запустите main.py")
|
||||
return
|
||||
|
||||
df = pd.read_csv(csv_file)
|
||||
|
||||
df = df[df['path_found'] == True]
|
||||
|
||||
if df.empty:
|
||||
print("Нет данных для графиков")
|
||||
return
|
||||
|
||||
mazes = [m.replace('.txt', '') for m in df['maze_file'].unique()]
|
||||
strategies = df['strategy'].unique()
|
||||
|
||||
fig, axes = plt.subplots(1, 3, figsize=(14, 5))
|
||||
fig.suptitle('Сравнение алгоритмов поиска в лабиринте', fontsize=14, fontweight='bold')
|
||||
|
||||
x = np.arange(len(mazes))
|
||||
width = 0.25
|
||||
colors = {'BFS': '#3498db', 'DFS': '#2ecc71', 'A*': '#e74c3c'}
|
||||
|
||||
for i, strategy in enumerate(strategies):
|
||||
times, visited, lengths = [], [], []
|
||||
|
||||
for maze in df['maze_file'].unique():
|
||||
data = df[(df['strategy'] == strategy) & (df['maze_file'] == maze)]
|
||||
if not data.empty:
|
||||
times.append(data['time_mean'].values[0])
|
||||
visited.append(data['visited_mean'].values[0])
|
||||
lengths.append(data['path_length_mean'].values[0])
|
||||
else:
|
||||
times.append(0)
|
||||
visited.append(0)
|
||||
lengths.append(0)
|
||||
|
||||
axes[0].bar(x + i*width, times, width, label=strategy,
|
||||
color=colors.get(strategy, 'gray'), alpha=0.7)
|
||||
axes[1].bar(x + i*width, visited, width, label=strategy,
|
||||
color=colors.get(strategy, 'gray'), alpha=0.7)
|
||||
axes[2].bar(x + i*width, lengths, width, label=strategy,
|
||||
color=colors.get(strategy, 'gray'), alpha=0.7)
|
||||
|
||||
axes[0].set_title(' Время выполнения (мс)')
|
||||
axes[0].set_xticks(x + width)
|
||||
axes[0].set_xticklabels(mazes, rotation=45, ha='right')
|
||||
axes[0].legend()
|
||||
axes[0].grid(True, alpha=0.3)
|
||||
|
||||
axes[1].set_title(' Посещённые клетки')
|
||||
axes[1].set_xticks(x + width)
|
||||
axes[1].set_xticklabels(mazes, rotation=45, ha='right')
|
||||
axes[1].legend()
|
||||
axes[1].grid(True, alpha=0.3)
|
||||
|
||||
axes[2].set_title(' Длина пути')
|
||||
axes[2].set_xticks(x + width)
|
||||
axes[2].set_xticklabels(mazes, rotation=45, ha='right')
|
||||
axes[2].legend()
|
||||
axes[2].grid(True, alpha=0.3)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig('experiment_results.png', dpi=150, bbox_inches='tight')
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
plot_results()
|
||||
Loading…
Reference in New Issue
Block a user