# 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 """