import plotly.graph_objects as go from plotly.subplots import make_subplots def plot_results(results, filename): fig = make_subplots(rows=len(results), cols=1, shared_xaxes=True) for i, (coro_name, x_values) in enumerate(results.items(), start=1): x_list = [] y_list = [] hover_text = [] for speedup, experiments in x_values.items(): for experiment in experiments: y_value = sum(experiment.values()) x_list.append(speedup) y_list.append(y_value) breakdown = "
".join([f" {key[0]} ({key[1]}): {round(value, 4)}" for key, value in experiment.items()]) hover_text.append(f"{coro_name}
Speedup: {speedup}
Total Wait: {round(y_value, 4)}
Breakdown:
{breakdown}") fig.add_trace(go.Scatter( x=x_list, y=y_list, mode='markers', name=coro_name, hoverinfo='text', hovertext=hover_text, )) fig.update_layout( title="Potential Speedups for ", xaxis_title="Speedup (times faster)", yaxis_title="Total Wait (seconds)", showlegend=True, ) fig.write_html(filename)