import gradio as gr import pandas as pd import plotly.express as px def load_data(): df = pd.DataFrame({ "tax_type": ["Income Tax", "Sales Tax", "Property Tax", "Corporate Tax", "Value Added Tax (VAT)", "Income Tax", "Sales Tax", "Property Tax", "Corporate Tax", "Value Added Tax (VAT)"], "compliance": [0.75, 0.82, 0.60, 0.70, 0.65, 0.79, 0.75, 0.66, 0.72, 0.68] }) return df def compliance_analysis(tax_type): df = load_data() compliance_rate = df[df["tax_type"] == tax_type]["compliance"].mean() compliance_rate = round(compliance_rate * 100, 2) df = df.groupby("tax_type").mean().reset_index() df = df.sort_values("compliance", ascending=False) fig = px.bar(df, x="compliance", y="tax_type", color="tax_type", orientation="h", title="Average Compliance Rate for Tax Types", labels={"compliance": "Compliance Rate (%)", "tax_type": "Tax Type"}) fig.update_xaxes(ticktext=[str(round(v * 100, 2)) + "%" for v in df["compliance"]], tickvals=df["compliance"] * 100) fig.update_layout(shapes=[ dict(type='line', x0=compliance_rate, x1=compliance_rate, y0=0, y1=1, yref='paper', line=dict(color='red', dash='dash')), dict(type='text', x=compliance_rate, y=1.1, yref='paper', text=f"{tax_type} ({compliance_rate}%)", textangle=0, font=dict(color='red', size=12)) ]) return fig tax_types = ["Income Tax", "Sales Tax", "Property Tax", "Corporate Tax", "Value Added Tax (VAT)"] inputs = gr.components.Dropdown(tax_types, default=tax_types[0], label="Tax Type") #outputs = gr.components.Graph(label="Compliance Rate") outputs = gr.components.PlotlyPlot(label="Compliance Rate") gr.Interface(fn=compliance_analysis, inputs=inputs, outputs=outputs, title="Compliance Analysis", iframe_height=300).launch()