import plotly.graph_objects as go # Data from the provided JSON data = { "wifi_same": {"AP": 43.5, "AP@50": 87.2, "AP@75": 44.6, "AP-m": 38.1, "AP-l": 46.4}, "image_same": {"AP": 84.7, "AP@50": 94.4, "AP@75": 77.1, "AP-m": 70.3, "AP-l": 83.8}, "wifi_diff": {"AP": 27.3, "AP@50": 51.8, "AP@75": 24.2, "AP-m": 22.1, "AP-l": 28.6} } # Extract metrics and values metrics = list(data["wifi_same"].keys()) wifi_same_values = list(data["wifi_same"].values()) image_same_values = list(data["image_same"].values()) wifi_diff_values = list(data["wifi_diff"].values()) # Define colors from the brand palette - using darker color for WiFi Diff colors = ['#1FB8CD', '#FFC185', '#5D878F'] # Create the grouped bar chart fig = go.Figure() # Add bars for each method with hover data fig.add_trace(go.Bar( name='WiFi Same', x=metrics, y=wifi_same_values, marker_color=colors[0], hovertemplate='WiFi Same
Metric: %{x}
Score: %{y}' )) fig.add_trace(go.Bar( name='Image Same', x=metrics, y=image_same_values, marker_color=colors[1], hovertemplate='Image Same
Metric: %{x}
Score: %{y}' )) fig.add_trace(go.Bar( name='WiFi Diff', x=metrics, y=wifi_diff_values, marker_color=colors[2], hovertemplate='WiFi Diff
Metric: %{x}
Score: %{y}' )) # Update layout fig.update_layout( title='DensePose Performance Comparison', xaxis_title='AP Metrics', yaxis_title='Score', barmode='group', legend=dict(orientation='h', yanchor='bottom', y=1.05, xanchor='center', x=0.5), plot_bgcolor='rgba(0,0,0,0)', paper_bgcolor='white' ) # Add grid for better readability fig.update_yaxes(showgrid=True, gridcolor='lightgray') fig.update_xaxes(showgrid=False) # Save the chart fig.write_image('densepose_performance_chart.png')