Spaces:
Sleeping
Sleeping
Commit
·
0f95cf9
1
Parent(s):
118c2ea
feat: enhance visualization by adjusting margins, hover info, and marker sizes in intensity maps
Browse files
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=
|
| 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 |
-
|
| 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 |
-
|
| 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=
|
| 859 |
-
text=
|
| 860 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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=
|
| 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 |
-
|
| 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="實際觀測震度",
|