simen commited on
Commit
f59ae9e
·
1 Parent(s): a0e4229

make clickable and update thermal position

Browse files
Files changed (1) hide show
  1. app.py +15 -55
app.py CHANGED
@@ -13,7 +13,7 @@ import os
13
  from utils import latlon_to_xy
14
  import plotly.graph_objects as go
15
  from matplotlib.colors import to_hex, LinearSegmentedColormap
16
- from streamlit_plotly_events import plotly_events
17
 
18
 
19
  @st.cache_data(ttl=7200)
@@ -342,31 +342,6 @@ def build_map(_subset, date=None, hour=None):
342
  return fig
343
 
344
 
345
- from plotly.subplots import make_subplots
346
-
347
- import numpy as np
348
- import pandas as pd
349
- import plotly.graph_objects as go
350
- from plotly.subplots import make_subplots
351
- import numpy as np
352
- import pandas as pd
353
- import plotly.graph_objects as go
354
- from plotly.subplots import make_subplots
355
-
356
- import pandas as pd
357
- import numpy as np
358
- import plotly.graph_objects as go
359
- from plotly.subplots import make_subplots
360
- from plotly.subplots import make_subplots
361
- import numpy as np
362
- import pandas as pd
363
- import plotly.graph_objects as go
364
- from plotly.subplots import make_subplots
365
- import numpy as np
366
- import pandas as pd
367
- import plotly.graph_objects as go
368
-
369
-
370
  def interpolate_color(
371
  wind_speed, thresholds=[2, 8, 14], colors=["white", "green", "red", "black"]
372
  ):
@@ -552,7 +527,7 @@ def create_daily_thermal_and_wind_airgram(subset, x_target, y_target, date):
552
  fig.update_layout(
553
  height=800,
554
  width=950,
555
- title=f"Thermal and Wind Profiles for {start_date.strftime('%Y-%m-%d')}",
556
  xaxis=dict(title="Time"),
557
  yaxis=dict(title="Altitude (m)"),
558
  xaxis2=dict(title="Time", tickangle=-45),
@@ -637,31 +612,6 @@ def create_daily_airgram(subset, x_target, y_target, date):
637
  textfont={"size": 12},
638
  )
639
  )
640
-
641
- # Add wind speed information (if needed)
642
- speed = (
643
- np.sqrt(location_data["x_wind_ml"] ** 2 + location_data["y_wind_ml"] ** 2)
644
- .interp(time=new_timestamps, altitude=altitudes)
645
- .T.values
646
- )
647
- # fig.add_trace(
648
- # go.Scatter(
649
- # x=times,
650
- # y=altitudes,
651
- # mode="markers",
652
- # marker=dict(
653
- # size=8,
654
- # color=speed,
655
- # colorscale="Viridis",
656
- # colorbar=dict(title="Wind Speed (m/s)"),
657
- # cmin=0,
658
- # cmax=20, # Adjusted for expected data range
659
- # ),
660
- # hoverinfo="text",
661
- # text=[f"Speed: {s:.2f} m/s" for s in speed.flatten()],
662
- # )
663
- # )
664
-
665
  # Update layout
666
  fig.update_layout(
667
  title=f"Thermal Profiles for {start_date.strftime('%Y-%m-%d')}",
@@ -669,7 +619,6 @@ def create_daily_airgram(subset, x_target, y_target, date):
669
  yaxis=dict(title="Altitude (m)"),
670
  xaxis_tickangle=-45,
671
  )
672
-
673
  return fig
674
 
675
 
@@ -692,8 +641,19 @@ def show_forecast():
692
  date=st.session_state.forecast_date,
693
  hour=st.session_state.forecast_time,
694
  )
695
- st.plotly_chart(map_fig, use_container_width=True, config={"scrollZoom": True})
696
-
 
 
 
 
 
 
 
 
 
 
 
697
  x_target, y_target = latlon_to_xy(
698
  st.session_state.target_latitude, st.session_state.target_longitude
699
  )
 
13
  from utils import latlon_to_xy
14
  import plotly.graph_objects as go
15
  from matplotlib.colors import to_hex, LinearSegmentedColormap
16
+ from plotly.subplots import make_subplots
17
 
18
 
19
  @st.cache_data(ttl=7200)
 
342
  return fig
343
 
344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  def interpolate_color(
346
  wind_speed, thresholds=[2, 8, 14], colors=["white", "green", "red", "black"]
347
  ):
 
527
  fig.update_layout(
528
  height=800,
529
  width=950,
530
+ title=f"Airgram for {start_date.strftime('%Y-%m-%d')}, lat/lon: {st.session_state.target_latitude:.2f}, {st.session_state.target_longitude:.2f}",
531
  xaxis=dict(title="Time"),
532
  yaxis=dict(title="Altitude (m)"),
533
  xaxis2=dict(title="Time", tickangle=-45),
 
612
  textfont={"size": 12},
613
  )
614
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
  # Update layout
616
  fig.update_layout(
617
  title=f"Thermal Profiles for {start_date.strftime('%Y-%m-%d')}",
 
619
  yaxis=dict(title="Altitude (m)"),
620
  xaxis_tickangle=-45,
621
  )
 
622
  return fig
623
 
624
 
 
641
  date=st.session_state.forecast_date,
642
  hour=st.session_state.forecast_time,
643
  )
644
+ map_selection = st.plotly_chart(
645
+ map_fig,
646
+ use_container_width=True,
647
+ config={"scrollZoom": True, "displayModeBar": False},
648
+ on_select="rerun",
649
+ )
650
+ # Update lat lon if selection is made
651
+ selected_points = map_selection.get("selection").get("points")
652
+ if len(selected_points) > 0:
653
+ point = selected_points[0]
654
+ st.session_state.target_latitude = point["lat"]
655
+ st.session_state.target_longitude = point["lon"]
656
+ print("Updated lat lon")
657
  x_target, y_target = latlon_to_xy(
658
  st.session_state.target_latitude, st.session_state.target_longitude
659
  )