如何用Python在香港地图上绘制带坐标的强度分布图?
实现方案:在香港地图上绘制带强度颜色的坐标点
推荐两个能快速实现需求的库,分别适配交互式和静态可视化场景:
1. Folium(交互式地图首选)
Folium基于Leaflet.js,能轻松把自定义点叠加到在线地图上,还支持按数值映射颜色,适合做可交互的网页地图。
代码示例
import folium from branca.colormap import LinearColormap # 你的数据集(注意:示例坐标已调整为香港范围,可替换为真实数据) data = [ (22.3193, 114.1694, -100), (22.2855, 114.1577, -50) ] # 创建香港中心地图,设置初始缩放级别 hk_map = folium.Map(location=[22.3193, 114.1694], zoom_start=12) # 定义强度到颜色的映射:从蓝色(低强度)过渡到红色(高强度) colormap = LinearColormap(colors=['blue', 'yellow', 'red'], vmin=min(d[2] for d in data), vmax=max(d[2] for d in data)) # 遍历数据添加带颜色的标记点 for lat, lon, intensity in data: point_color = colormap(intensity) # 圆形标记,可调整半径、透明度等参数 folium.CircleMarker( location=[lat, lon], radius=8, color=point_color, fill=True, fill_color=point_color, popup=f"强度值: {intensity}" # 点击点可查看具体强度 ).add_to(hk_map) # 添加颜色图例到地图 colormap.add_to(hk_map) # 保存为HTML文件,直接打开即可交互查看 hk_map.save('hk_intensity_map.html')
2. Matplotlib + Contextily(静态地图首选)
如果需要生成静态图片,用Matplotlib绘制点,再通过Contextily叠加香港瓦片地图,全程本地可控,适合插入报告或文档。
代码示例
import matplotlib.pyplot as plt import contextily as ctx import numpy as np # 你的数据集 lats = np.array([22.3193, 22.2855]) lons = np.array([114.1694, 114.1577]) intensities = np.array([-100, -50]) # 创建绘图画布 fig, ax = plt.subplots(figsize=(8, 8)) # 绘制点:用colormap映射强度到颜色,设置点大小和透明度 scatter = ax.scatter(lons, lats, c=intensities, cmap='coolwarm', s=200, alpha=0.7) # 叠加香港开源瓦片地图(自动适配当前坐标范围) ctx.add_basemap(ax, crs='EPSG:4326', source=ctx.providers.OpenStreetMap.Mapnik) # 添加颜色条标注强度对应关系 plt.colorbar(scatter, label='强度值') # 设置图表标题和坐标轴标签 ax.set_title('香港强度点位分布图') ax.set_xlabel('经度') ax.set_ylabel('纬度') plt.show()
关键提示
- 两个库都无需手动下载地图数据,Folium调用在线地图服务,Contextily自动拉取瓦片资源;
- 颜色映射可通过
cmap参数切换不同色卡(比如viridis、RdBu),适配正负强度的展示需求; - 确保数据集使用WGS84坐标系(EPSG:4326),这是大多数地图服务的标准坐标格式。
内容的提问来源于stack exchange,提问作者user16971617
相关产品推荐
相关产品推荐

