如何在Plotly.py的分级统计图上显示地图标签?
解决Plotly Choroplethmapbox遮挡地图标签的问题
核心解决方案是利用Plotly的below参数,将分级统计图层渲染在底图的标签图层下方,这样就能让地名等标签显示在颜色区域之上,同时保持图层完全不透明。
修改后的代码
import plotly.graph_objects as go fig = go.Figure(go.Choroplethmapbox( geojson=counties, locations=df.fips, z=df.data, zmin=0, zmax=1, marker_opacity=1, below='labels' # 关键参数:让分级图层位于标签下方 )) fig.update_layout( mapbox_style='open-street-map', mapbox_zoom=3, mapbox_center={'lat': 37.0902, 'lon': -95.7129}, margin={'r': 0, 't': 0, 'l': 0, 'b': 0} ) fig.show()
补充说明
如果使用open-street-map样式时below='labels'效果不佳,可以切换到Mapbox官方的矢量样式(需要注册Mapbox获取免费访问令牌),这类样式的图层层级更明确:
fig.update_layout( mapbox_style='mapbox://styles/mapbox/light-v10', mapbox_access_token='你的Mapbox令牌', mapbox_zoom=3, mapbox_center={'lat': 37.0902, 'lon': -95.7129}, margin={'r': 0, 't': 0, 'l': 0, 'b': 0} )
原理:默认情况下Choroplethmapbox会覆盖底图所有元素,below='labels'参数强制将颜色图层放在底图的标签层之下,既保留了颜色区域的完全不透明,又能清晰看到地名标签。
内容的提问来源于stack exchange,提问作者q9i
相关产品推荐
相关产品推荐

