Coverage for src/graphs/land_region_graph.py: 0%
12 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-03 19:06 +0000
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-03 19:06 +0000
1import pandas as pd
2import plotly.graph_objects as go
5def create_land_region_active_graph(df, theme):
6 df = df.copy()
7 # Step 1: Convert date to datetime if needed
8 df['date'] = pd.to_datetime(df['date'])
10 # Step 2: Filter to the latest date
11 latest_date = df['date'].max()
12 latest_df = df[df['date'] == latest_date].copy()
14 # Step 3: Calculate inactive column
15 latest_df['inactive'] = 1000 - latest_df['active']
17 # Step 4: Sort by active ascending
18 latest_df = latest_df.sort_values(by='active', ascending=False)
20 # Step 5: Create the stacked bar chart
21 fig = go.Figure(data=[
22 go.Bar(name='Active', x=latest_df['region_uid'], y=latest_df['active']),
23 go.Bar(name='Inactive', x=latest_df['region_uid'], y=latest_df['inactive'])
24 ])
26 # Update layout for stacking
27 fig.update_layout(
28 barmode='stack',
29 title=f'Active vs Inactive Deeds per Region (as of {latest_date.date()})',
30 xaxis_title='Region UID',
31 yaxis_title='Deeds',
32 xaxis_tickangle=45,
33 legend=dict(x=0.85, y=0.95),
34 template=theme,
35 )
36 return fig