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

1import pandas as pd 

2import plotly.graph_objects as go 

3 

4 

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']) 

9 

10 # Step 2: Filter to the latest date 

11 latest_date = df['date'].max() 

12 latest_df = df[df['date'] == latest_date].copy() 

13 

14 # Step 3: Calculate inactive column 

15 latest_df['inactive'] = 1000 - latest_df['active'] 

16 

17 # Step 4: Sort by active ascending 

18 latest_df = latest_df.sort_values(by='active', ascending=False) 

19 

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 ]) 

25 

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