Plotly mapbox地图保存为PNG时标记点文本不显示问题咨询
问题原因
你当前代码中Scattermapbox配置的mode='markers'仅会在交互状态的hover弹窗中展示text内容,静态导出PNG时不会渲染hover类的临时内容,因此会出现交互时文本可见、导出后文本丢失的问题。
解决方案
调整Scattermapbox的展示模式,将文本设置为默认固定展示即可,同时可配置文本样式适配显示效果,修改后的完整代码如下:
import plotly.graph_objects as go mapbox_access_token = open(".mapbox_token").read() fig = go.Figure(go.Scattermapbox( lat=['45.5017'], lon=['-73.5673'], # 修改mode为markers+text,同时展示标记和文本 mode='markers+text', marker=go.scattermapbox.Marker( size=14 ), text=['Montreal'], # 配置文本位置,可选top/right/bottom/left等 textposition='top right', # 可选配置文本字体样式 textfont=dict( size=16, color='black' ) )) fig.update_layout( hovermode='closest', mapbox=dict( accesstoken=mapbox_access_token, bearing=0, center=go.layout.mapbox.Center( lat=45, lon=-73 ), pitch=0, zoom=5 ) ) # 静态导出PNG需要先安装kaleido库:pip install kaleido fig.write_image("montreal_map.png") fig.show()
补充说明
- 不建议直接在Jupyter的交互界面右键保存图片,优先使用
fig.write_image方法导出,可保证所有元素渲染完整 - 如果需要添加和点位无关的独立注释,可以使用
fig.add_annotation()方法自定义注释内容、位置、样式 - 导出时如果出现地图底图加载不全的问题,可以适当增加
write_image的width、height参数,或者调整scale参数提高导出清晰度
内容的提问来源于stack exchange,提问作者iamkj
相关产品推荐
相关产品推荐

