2026-rff_mp/volkovim/task2/experiments/plots.py
2026-05-24 21:48:59 +03:00

161 lines
2.5 KiB
Python

import csv
import matplotlib.pyplot as plt
class ChartBuilder:
def __init__(
self,
csv_file
):
self.csv_file = csv_file
def _read(self):
rows = []
with open(
self.csv_file,
"r",
encoding="utf-8"
) as file:
reader = csv.DictReader(file)
for row in reader:
rows.append(row)
return rows
def buildTimeChart(self):
rows = self._read()
labels = []
values = []
for row in rows:
labels.append(
f"{row['maze']}\n"
f"{row['strategy']}"
)
values.append(
float(
row["time_ms"]
)
)
plt.figure()
plt.bar(
labels,
values
)
plt.title(
"Search Time"
)
plt.ylabel(
"Milliseconds"
)
plt.xticks(
rotation=45
)
plt.tight_layout()
plt.show()
def buildVisitedChart(self):
rows = self._read()
labels = []
values = []
for row in rows:
labels.append(
f"{row['maze']}\n"
f"{row['strategy']}"
)
values.append(
float(
row[
"visited_cells"
]
)
)
plt.figure()
plt.bar(
labels,
values
)
plt.title(
"Visited Cells"
)
plt.ylabel(
"Cells"
)
plt.xticks(
rotation=45
)
plt.tight_layout()
plt.show()
def buildPathChart(self):
rows = self._read()
labels = []
values = []
for row in rows:
labels.append(
f"{row['maze']}\n"
f"{row['strategy']}"
)
values.append(
float(
row[
"path_length"
]
)
)
plt.figure()
plt.bar(
labels,
values
)
plt.title(
"Path Length"
)
plt.ylabel(
"Cells"
)
plt.xticks(
rotation=45
)
plt.tight_layout()
plt.show()