【发布时间】:2021-10-23 02:33:42
【问题描述】:
我有两个独立的地图,一个是一个国家的文化边界(就像州边界一样),以基于纬度和经度值的自定义多边形的形式,以 geojson 格式定义。我可以使用 geopandas 轻松绘制多边形:
states = gpd.read_file('myfile.geojson')
states.boundary.plot()
这是一个示例输出:
第二个是一系列纬度和经度以及我需要在地图图层上绘制的相应值,我可以使用 plotly express 的 scatter_mapbox 来完成:
fig = px.scatter_mapbox(df_year,
lat='y', lon='x',
color='drought_index',
range_color=(-4, 4),
hover_data={'x': False, 'y': False},
zoom=5, height=800, width=1050,
center={'lat': 32.7089, 'lon': 53.6880},
color_continuous_scale=px.colors.diverging.RdYlGn,
color_continuous_midpoint=0,
)
fig.update_layout(mapbox_style="outdoors", mapbox_accesstoken=mb_token)
看起来像这样:
有没有办法将这两个图加在一起,让散点和形状边界在一张地图上重叠?这意味着在 mapbox 层的顶部,我可以看到散点和多边形的边界。
问题是 geopandas plot 使用 matplotlib 并 returens AxesSubplot:,我找不到任何方法将它添加到 plotly 图中。我尝试了 plotly.tools 中的 mpl_to_plotly(),但它在“Canvas is null”上引发了异常。
我还试图找到一种方法来绘制 geojson 形状的 plotly,但我能找到的只是需要用颜色填充形状的 choropleth mapbox。我尝试通过降低等值线图的不透明度来使用它,但它要么会覆盖散点图,要么几乎不可见。
感谢任何有关如何解决此问题的建议。
【问题讨论】:
标签: python plot plotly geopandas