gauravlochab commited on
Commit
6f0e911
·
1 Parent(s): 9ca7c3a

feat: enable autoscaling for y-axis and x-axis in combined time series graph

Browse files
Files changed (1) hide show
  1. app.py +33 -69
app.py CHANGED
@@ -593,14 +593,8 @@ def create_combined_time_series_graph(df):
593
  # Create Plotly figure in a clean state
594
  fig = go.Figure()
595
 
596
- # FORCE FIXED Y-AXIS RANGE based on the known data range
597
- # Set explicit fixed values that will show the data clearly
598
- min_apr = -40 # Bottom of the range
599
- max_apr = -10 # Top of the range
600
-
601
- logger.info(f"Using fixed y-axis range: [{min_apr}, {max_apr}]")
602
-
603
- logger.info(f"Setting y-axis range to [{min_apr:.2f}, {max_apr:.2f}] based on filtered data")
604
 
605
  # Add background shapes for APR and Performance regions
606
  min_time = df['timestamp'].min()
@@ -611,7 +605,7 @@ def create_combined_time_series_graph(df):
611
  type="rect",
612
  fillcolor="rgba(230, 243, 255, 0.3)",
613
  line=dict(width=0),
614
- y0=0, y1=max_apr,
615
  x0=min_time, x1=max_time,
616
  layer="below"
617
  )
@@ -621,7 +615,7 @@ def create_combined_time_series_graph(df):
621
  type="rect",
622
  fillcolor="rgba(255, 230, 230, 0.3)",
623
  line=dict(width=0),
624
- y0=min_apr, y1=0,
625
  x0=min_time, x1=max_time,
626
  layer="below"
627
  )
@@ -844,46 +838,28 @@ def create_combined_time_series_graph(df):
844
  # Use fixed tick spacing for clarity
845
  dtick = 5 # 5-unit ticks for better readability
846
 
 
847
  fig.update_yaxes(
848
  showgrid=True,
849
  gridwidth=1,
850
  gridcolor='rgba(0,0,0,0.1)',
851
- range=[min_apr, max_apr], # Updated range based on filtered data
852
- tickmode='linear',
853
- tick0=0,
854
- dtick=dtick
855
  )
856
 
857
- # Update x-axis with better formatting and focus on data points
858
- # Get the actual data time range
859
- if not apr_data.empty:
860
- # Find the actual time range where we have data
861
- data_min_time = apr_data['timestamp'].min()
862
- data_max_time = apr_data['timestamp'].max()
863
-
864
- # Add some padding (10% on each side)
865
- time_range = data_max_time - data_min_time
866
- padding = time_range * 0.1
867
- display_min_time = data_min_time - padding
868
- display_max_time = data_max_time + padding
869
-
870
- # Update x-axis range to focus on the actual data
871
- fig.update_xaxes(
872
- showgrid=True,
873
- gridwidth=1,
874
- gridcolor='rgba(0,0,0,0.1)',
875
- range=[display_min_time, display_max_time],
876
- tickformat="%b %d, %H:%M", # More detailed time format
877
- tickangle=-30, # Angle the labels for better readability
878
- tickfont=dict(size=12) # Larger font for tick labels
879
- )
880
- else:
881
- # Default x-axis settings if no data
882
- fig.update_xaxes(
883
- showgrid=True,
884
- gridwidth=1,
885
- gridcolor='rgba(0,0,0,0.1)'
886
- )
887
 
888
  # SIMPLIFIED APPROACH: Do a direct plot without markers for comparison
889
  # This creates a simple, reliable fallback plot if the advanced one fails
@@ -1028,36 +1004,24 @@ def create_combined_time_series_graph(df):
1028
  title="Average APR Values Across All Agents",
1029
  xaxis_title="Time",
1030
  yaxis_title="Value",
1031
- yaxis=dict(
1032
- range=[-40, -10], # Fixed range to match the main graph
1033
- tickmode='linear',
1034
- tick0=0,
1035
- dtick=5
1036
- ),
1037
  height=700, # Increased height
1038
  width=1400, # Increased width
1039
  template="plotly_white" # Use a cleaner template
1040
  )
1041
 
1042
- # Apply the same x-axis improvements to the fallback graph
1043
- if not apr_data.empty:
1044
- # Find the actual time range where we have data
1045
- data_min_time = apr_data['timestamp'].min()
1046
- data_max_time = apr_data['timestamp'].max()
1047
-
1048
- # Add some padding (10% on each side)
1049
- time_range = data_max_time - data_min_time
1050
- padding = time_range * 0.1
1051
- display_min_time = data_min_time - padding
1052
- display_max_time = data_max_time + padding
1053
-
1054
- # Update x-axis range to focus on the actual data
1055
- simple_fig.update_xaxes(
1056
- range=[display_min_time, display_max_time],
1057
- tickformat="%b %d, %H:%M",
1058
- tickangle=-30,
1059
- tickfont=dict(size=12)
1060
- )
1061
 
1062
  # Add a note about hidden agents if there are more than MAX_VISIBLE_AGENTS
1063
  if len(unique_agents) > MAX_VISIBLE_AGENTS:
 
593
  # Create Plotly figure in a clean state
594
  fig = go.Figure()
595
 
596
+ # Enable autoscaling instead of fixed ranges
597
+ logger.info("Using autoscaling for axes ranges")
 
 
 
 
 
 
598
 
599
  # Add background shapes for APR and Performance regions
600
  min_time = df['timestamp'].min()
 
605
  type="rect",
606
  fillcolor="rgba(230, 243, 255, 0.3)",
607
  line=dict(width=0),
608
+ y0=0, y1=100, # Use a fixed positive value
609
  x0=min_time, x1=max_time,
610
  layer="below"
611
  )
 
615
  type="rect",
616
  fillcolor="rgba(255, 230, 230, 0.3)",
617
  line=dict(width=0),
618
+ y0=-100, y1=0, # Use a fixed negative value
619
  x0=min_time, x1=max_time,
620
  layer="below"
621
  )
 
838
  # Use fixed tick spacing for clarity
839
  dtick = 5 # 5-unit ticks for better readability
840
 
841
+ # Update y-axis with autoscaling and improved appearance
842
  fig.update_yaxes(
843
  showgrid=True,
844
  gridwidth=1,
845
  gridcolor='rgba(0,0,0,0.1)',
846
+ # No fixed range - let Plotly autoscale
847
+ autorange=True, # Explicitly enable autoscaling
848
+ tickformat=".2f", # Format tick labels with 2 decimal places
849
+ tickfont=dict(size=12) # Larger font for tick labels
850
  )
851
 
852
+ # Update x-axis with better formatting and autoscaling
853
+ fig.update_xaxes(
854
+ showgrid=True,
855
+ gridwidth=1,
856
+ gridcolor='rgba(0,0,0,0.1)',
857
+ # No fixed range - let Plotly autoscale
858
+ autorange=True, # Explicitly enable autoscaling
859
+ tickformat="%b %d, %H:%M", # More detailed time format
860
+ tickangle=-30, # Angle the labels for better readability
861
+ tickfont=dict(size=12) # Larger font for tick labels
862
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
863
 
864
  # SIMPLIFIED APPROACH: Do a direct plot without markers for comparison
865
  # This creates a simple, reliable fallback plot if the advanced one fails
 
1004
  title="Average APR Values Across All Agents",
1005
  xaxis_title="Time",
1006
  yaxis_title="Value",
1007
+ yaxis=dict(
1008
+ # No fixed range - let Plotly autoscale
1009
+ autorange=True, # Explicitly enable autoscaling
1010
+ tickformat=".2f", # Format tick labels with 2 decimal places
1011
+ tickfont=dict(size=12) # Larger font for tick labels
1012
+ ),
1013
  height=700, # Increased height
1014
  width=1400, # Increased width
1015
  template="plotly_white" # Use a cleaner template
1016
  )
1017
 
1018
+ # Apply autoscaling to the x-axis for the fallback graph
1019
+ simple_fig.update_xaxes(
1020
+ autorange=True, # Explicitly enable autoscaling
1021
+ tickformat="%b %d, %H:%M",
1022
+ tickangle=-30,
1023
+ tickfont=dict(size=12)
1024
+ )
 
 
 
 
 
 
 
 
 
 
 
 
1025
 
1026
  # Add a note about hidden agents if there are more than MAX_VISIBLE_AGENTS
1027
  if len(unique_agents) > MAX_VISIBLE_AGENTS: