取手册中的示例,
import pandas as pd
us_cities = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv")
import plotly.express as px
fig = px.scatter_mapbox(us_cities, lat="lat", lon="lon", hover_name="City", hover_data=["State", "Population"],
color_discrete_sequence=["fuchsia"], zoom=3, height=300)
fig.update_layout(mapbox_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.write_image('/tmp/so.pdf')
可以看到地图(包括绘制的点)实际上只是一个嵌入的光栅图形:
如何将 OpenStreetMap 绘图导出为完整矢量图形?
您使用的背景地图源自提供 png 而非矢量图形的网络地图图块服务...
来自文档:(https://plotly.com/python/mapbox-layers/))
“open-street-map”、“carto-positron”和“carto-darkmatter”产量地图由来自各种公共切片服务器的栅格切片组成,不需要注册或访问令牌。
“基本”、“街道”、“户外”、“光”、“暗”、“卫星”或“卫星街道”产生由 Mapbox 服务的矢量切片组成的地图,并且需要 Mapbox 访问令牌或本地 Mapbox 安装。
要免费从 openstreetmap 访问矢量数据,我建议查看 osmnx,在本地下载您需要的(矢量)数据,然后从中创建地图。