jimmy60504 commited on
Commit
0f95cf9
·
1 Parent(s): 118c2ea

feat: enhance visualization by adjusting margins, hover info, and marker sizes in intensity maps

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -693,7 +693,7 @@ def plot_waveform(st, selected_stations, first_pick, duration):
693
  hovermode='closest',
694
  height=200,
695
  plot_bgcolor='white',
696
- margin=dict(l=0, r=10, t=30, b=0), # 緊凑的邊距設置
697
  showlegend=True,
698
  legend=dict(
699
  yanchor="top",
@@ -821,7 +821,7 @@ def create_intensity_map(
821
  color="rgba(128, 128, 128, 0.9)", # 較不透明
822
  ),
823
  text=stations_in_window["text"],
824
- hovertemplate="%{text}<extra></extra>",
825
  name="輸入測站 (P波在窗內)",
826
  showlegend=True,
827
  )
@@ -839,7 +839,7 @@ def create_intensity_map(
839
  color="rgba(128, 128, 128, 0.3)", # 較透明
840
  ),
841
  text=stations_out_window["text"],
842
- hovertemplate="%{text}<extra></extra>",
843
  name="輸入測站 (P波在窗外)",
844
  showlegend=True,
845
  )
@@ -850,14 +850,19 @@ def create_intensity_map(
850
  for intensity_level in range(10):
851
  group = intensity_groups[intensity_level]
852
  if group["lat"]: # 有資料的震度等級
 
853
  fig.add_trace(
854
  go.Scattermap(
855
  lat=group["lat"],
856
  lon=group["lon"],
857
- mode="markers",
858
- marker=dict(size=14, color=group["color"], opacity=0.9),
859
- text=group["text"],
860
- hovertemplate="%{text}<extra></extra>",
 
 
 
 
861
  name=f"震度 {intensity_labels[intensity_level]}",
862
  showlegend=True,
863
  )
@@ -869,7 +874,7 @@ def create_intensity_map(
869
  lat=[None],
870
  lon=[None],
871
  mode="markers",
872
- marker=dict(size=14, color=group["color"], opacity=0.9),
873
  name=f"震度 {intensity_labels[intensity_level]}",
874
  showlegend=True,
875
  hoverinfo="skip",
@@ -885,7 +890,7 @@ def create_intensity_map(
885
  mode="markers",
886
  marker=dict(size=25, color="red"),
887
  text=[f"震央<br>({epicenter_lat:.3f}, {epicenter_lon:.3f})"],
888
- hovertemplate="%{text}<extra></extra>",
889
  name="震央",
890
  showlegend=True,
891
  )
@@ -911,6 +916,7 @@ def create_intensity_map(
911
  ),
912
  height=550, # 設置固定高度以適應 Gradio 容器
913
  margin=dict(l=0, r=0, t=0, b=0),
 
914
  showlegend=True,
915
  legend=dict(
916
  yanchor="top",
@@ -1186,7 +1192,7 @@ with gr.Blocks(title="TTSAM 震度預測系統", fill_height=True) as demo:
1186
 
1187
  # ========== 下層:合併地圖 vs 實際觀測 ==========
1188
  with gr.Row():
1189
- predicted_intensity_map = gr.Plot(label="合併地圖")
1190
 
1191
  observed_intensity_image = gr.Image(
1192
  label="實際觀測震度",
 
693
  hovermode='closest',
694
  height=200,
695
  plot_bgcolor='white',
696
+ margin=dict(l=0, r=10, t=50, b=0), # 緊凑的邊距設置
697
  showlegend=True,
698
  legend=dict(
699
  yanchor="top",
 
821
  color="rgba(128, 128, 128, 0.9)", # 較不透明
822
  ),
823
  text=stations_in_window["text"],
824
+ hoverinfo="text",
825
  name="輸入測站 (P波在窗內)",
826
  showlegend=True,
827
  )
 
839
  color="rgba(128, 128, 128, 0.3)", # 較透明
840
  ),
841
  text=stations_out_window["text"],
842
+ hoverinfo="text",
843
  name="輸入測站 (P波在窗外)",
844
  showlegend=True,
845
  )
 
850
  for intensity_level in range(10):
851
  group = intensity_groups[intensity_level]
852
  if group["lat"]: # 有資料的震度等級
853
+ # 先添加圓圈標記
854
  fig.add_trace(
855
  go.Scattermap(
856
  lat=group["lat"],
857
  lon=group["lon"],
858
+ mode="markers+text",
859
+ marker=dict(size=20, color=group["color"], opacity=0.9),
860
+ text=intensity_labels[intensity_level],
861
+ textposition="middle center",
862
+ textfont=dict(size=14,
863
+ color=("black" if intensity_level <= 4 else "white"),
864
+ family="Open Sans Bold"),
865
+ hoverinfo="text",
866
  name=f"震度 {intensity_labels[intensity_level]}",
867
  showlegend=True,
868
  )
 
874
  lat=[None],
875
  lon=[None],
876
  mode="markers",
877
+ marker=dict(size=24, color=group["color"], opacity=0.9),
878
  name=f"震度 {intensity_labels[intensity_level]}",
879
  showlegend=True,
880
  hoverinfo="skip",
 
890
  mode="markers",
891
  marker=dict(size=25, color="red"),
892
  text=[f"震央<br>({epicenter_lat:.3f}, {epicenter_lon:.3f})"],
893
+ hoverinfo="text",
894
  name="震央",
895
  showlegend=True,
896
  )
 
916
  ),
917
  height=550, # 設置固定高度以適應 Gradio 容器
918
  margin=dict(l=0, r=0, t=0, b=0),
919
+ hovermode="closest", # 啟用 hover 功能
920
  showlegend=True,
921
  legend=dict(
922
  yanchor="top",
 
1192
 
1193
  # ========== 下層:合併地圖 vs 實際觀測 ==========
1194
  with gr.Row():
1195
+ predicted_intensity_map = gr.Plot(label="預測震度")
1196
 
1197
  observed_intensity_image = gr.Image(
1198
  label="實際觀測震度",