Python中Plotly实现:地图上叠加点与多边形图层
在Plotly Geo地图上叠加多边形图层(无需Mapbox)
你可以借助plotly.graph_objects.Choropleth来加载GeoJSON多边形,并把它作为新图层加到你已有的散点地图里。下面是完整的实现代码:
import plotly.express as px import plotly.graph_objects as go import json # 加载点数据和多边形GeoJSON(这里假设你已经有points数据集,多边形数据可从文件读取) points = ... # 你的点数据 polygon_geojson = json.load(open("your_polygons.geojson")) # 替换为你的多边形GeoJSON路径 # 初始化点图层 fig = px.scatter_geo(points, 'y', 'x', color='blue', labels={"poi": "Points of Interest"}, ) # 添加红色多边形图层 fig.add_trace(go.Choropleth( geojson=polygon_geojson, # 匹配GeoJSON中每个多边形的唯一标识,根据你的数据调整字段 locations=[feat['properties']['id'] for feat in polygon_geojson['features']], featureidkey="properties.id", colorscale=[[0, "red"], [1, "red"]], # 固定为红色 showscale=False, # 隐藏颜色标尺 marker_line_color="darkred", # 多边形边框颜色 marker_line_width=1, opacity=0.5 # 半透明避免遮挡点 )) # 保持原有的地图样式设置 fig.update_geos(showcoastlines=True, coastlinecolor="Black", showland=True, landcolor="White", showocean=True, oceancolor="LightBlue") fig.show()
关键说明:
- 用
Choropleth渲染纯色多边形是个实用技巧:通过设置首尾颜色一致的colorscale,再关闭颜色标尺,就能得到纯色填充的多边形。 locations和featureidkey必须对应:如果你的GeoJSON里没有properties.id,可以改成featureidkey="index",同时locations=list(range(len(polygon_geojson['features']))),用索引来匹配每个多边形。- 调整
opacity参数可以平衡多边形和点的可见性,避免点被完全覆盖。
内容的提问来源于stack exchange,提问作者CarlaVdB
相关产品推荐
相关产品推荐

