import pandas as pd import gradio as gr import matplotlib.pyplot as plt import seaborn as sns from typing import Tuple import plotly.express as px def plot_kl_div_per_market(closed_markets: pd.DataFrame) -> gr.Plot: # adding the total all_markets = closed_markets.copy(deep=True) all_markets["market_creator"] = "all" # merging both dataframes final_markets = pd.concat([closed_markets, all_markets], ignore_index=True) final_markets = final_markets.sort_values(by="opening_datetime", ascending=True) fig = px.box( final_markets, x="month_year_week", y="kl_divergence", color="market_creator", color_discrete_sequence=["purple", "goldenrod", "darkgreen"], category_orders={"market_creator": ["pearl", "quickstart", "all"]}, ) fig.update_traces(boxmean=True) fig.update_layout( xaxis_title="Markets closing Week", yaxis_title="Kullback–Leibler divergence", legend=dict(yanchor="top", y=0.5), ) fig.update_xaxes(tickformat="%b %d\n%Y") return gr.Plot( value=fig, )