project/analyzers/render/biogames.py

32 lines
823 B
Python

from collections import defaultdict
from typing import List, Tuple
import matplotlib.pyplot as plt
from . import Render
from .. import Result, SimulationRoundsAnalyzer
def plot(src_data: List[Tuple[str, List[int]]]):
names, datas = list(zip(*src_data))
plt.boxplot(datas, labels=names)
plt.xticks(rotation='vertical')
# plt.margins()
plt.ylabel("simulation rounds")
plt.title("simulation retries")
plt.show()
class SimulationRoundsRender(Render):
def render(self, results: List[Result]):
data = defaultdict(list)
for result in self.filter(results):
get = result.get()
for key in get:
data[key].append(get[key])
data_tuples = [(key, data[key]) for key in sorted(data)]
data_tuples = sorted(data_tuples, key=lambda x: sum(x[1]))
plot(data_tuples)
result_types = [SimulationRoundsAnalyzer]