Spaces:
Running
Running
# config/defaults.py | |
DEFAULT_MAP_CODE = """ | |
# === 歡迎來到地圖繪製實驗室 === | |
# 試著修改下方的參數,然後點擊「執行程式碼」看看會發生什麼事! | |
# --- 地圖參數設定 --- | |
center_lon, center_lat = 135, 35 | |
extent_lon, extent_lat = 30, 25 | |
map_title = "Map with Custom Symbols" | |
coastline_color = 'darkgreen' | |
# --- 符號參數設定 (在這裡新增或修改你的標記點!) --- | |
symbols = [ | |
{'lon': 121.52, 'lat': 25.04, 'style': 'r*', 'label': 'Taipei 101'}, | |
{'lon': 139.69, 'lat': 35.68, 'style': 'bs', 'label': 'Tokyo'}, | |
{'lon': 126.97, 'lat': 37.56, 'style': 'go', 'label': 'Seoul'}, | |
] | |
# --- 核心繪圖區 --- | |
import matplotlib.pyplot as plt | |
import cartopy.crs as ccrs | |
import cartopy.feature as cfeature | |
fig = plt.figure(figsize=(8, 8)) | |
projection = ccrs.Mercator(central_longitude=center_lon) | |
ax = fig.add_subplot(1, 1, 1, projection=projection) | |
ax.set_extent([center_lon - extent_lon / 2, center_lon + extent_lon / 2, center_lat - extent_lat / 2, center_lat + extent_lat / 2], crs=ccrs.PlateCarree()) | |
ax.add_feature(cfeature.LAND, edgecolor='black', facecolor='#c5a582') | |
ax.add_feature(cfeature.OCEAN, facecolor='#a2d1f5') | |
ax.add_feature(cfeature.COASTLINE.with_scale('50m'), edgecolor=coastline_color) | |
ax.add_feature(cfeature.BORDERS, linestyle=':') | |
for symbol in symbols: | |
ax.plot(symbol['lon'], symbol['lat'], symbol['style'], markersize=12, markeredgecolor='white', transform=ccrs.PlateCarree(), label=symbol['label']) | |
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linewidth=0.7, color='gray', alpha=0.5, linestyle='--') | |
gl.top_labels = False | |
gl.right_labels = False | |
ax.legend() | |
ax.set_title(map_title) | |
print(f"成功繪製了 {len(symbols)} 個符號!") | |
# fig = fig | |
""" | |
DEFAULT_SEISMO_CODE = """ | |
# === 歡迎來到震波圖繪製實驗室 === | |
# --- 參數設定區 --- | |
p_wave_arrival = 10; s_wave_arrival = 25; main_freq = 2.0; decay_rate = 0.04; plot_title = "Simulated P and S Wave Arrival" | |
# --- 核心繪圖區 --- | |
import matplotlib.pyplot as plt; import numpy as np | |
t = np.linspace(0, 100, 1000); amp = np.zeros_like(t) | |
p_wave_mask = t > p_wave_arrival; p_wave = 1.0 * np.exp(-decay_rate * (t - p_wave_arrival)) * np.sin(2 * np.pi * main_freq * (t - p_wave_arrival)); amp += p_wave * p_wave_mask | |
s_wave_mask = t > s_wave_arrival; s_wave = 2.5 * np.exp(-decay_rate * (t - s_wave_arrival)) * np.sin(2 * np.pi * (main_freq * 0.6) * (t - s_wave_arrival)); amp += s_wave * s_wave_mask | |
amp += 0.1 * np.random.randn(len(t)); fig, ax = plt.subplots(figsize=(8, 4)); ax.plot(t, amp, 'k-') | |
ax.axvline(p_wave_arrival, color='r', linestyle='--', label=f'P-wave at {p_wave_arrival}s') | |
ax.axvline(s_wave_arrival, color='b', linestyle='--', label=f'S-wave at {s_wave_arrival}s') | |
ax.set_title(plot_title); ax.set_xlabel("Time (seconds)"); ax.set_ylabel("Amplitude"); ax.grid(True); ax.legend(); plt.tight_layout() | |
print(f"P-S time difference: {s_wave_arrival - p_wave_arrival} seconds") | |
# fig = fig | |
""" |