您可以在Plotly和Dash中免费使用OSM地图,无需限制或Mapbox API帐户,请参见https://plotly.com/python/mapbox-layers/:
layout.mapbox.style中的基础地图
layout.mapbox.style的可接受值之一为:
- "white-bg"产生一个空白的白色画布,不会导致外部HTTP请求
- “open-street-map”,“carto-positron”,“carto-darkmatter”,“stamen-terrain”,“stamen-toner”或“stamen-watercolor”生成由来自各种公共切片服务器的栅格切片组成的地图,不需要注册或访问令牌
- “basic”,“streets”,“outdoors”,“light”,“dark”,“satellite”或“satellite-streets”生成由Mapbox服务的矢量瓦片组成的地图,并且需要Mapbox Access Token或本地Mapbox安装。
- Mapbox服务样式URL,需要Mapbox Access Token或本地Mapbox安装。
- 如
https://docs.mapbox.com/mapbox-gl-js/style-spec/所定义的Mapbox Style对象。
以下是相同plotly文档中使用OSM底图且无任何身份验证令牌的示例代码:
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.show()
关于构建实际网站,我建议使用Dash,它是与Plotly紧密集成的Web服务器。