32 lines
823 B
Python
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]
|