【发布时间】:2021-10-16 02:25:38
【问题描述】:
我正在尝试在 white-bg 密度地图框顶部添加 Scattergeo 跟踪或叠加层,以获取通用美国各州轮廓的热图。
我使用scattergeo 的原因是我想在密度图框顶部绘制一个星形符号,而通过add_scattermapbox 接受的唯一符号是一个点。如果选择star符号,则没有添加符号。
我还知道,对于 p mapbox_styles 或 add_scattermapbox 或 density_scattermapbox,星号是可以接受的,但目前我无法在试用金额用完后按 Web 加载付费。
有没有一种巧妙的方法可以在density_mapbox 图上添加星号?
工作 ScatterGeo
fig = go.Figure(go.Scattergeo())
fig.add_scattergeo(lat = [30, 40]
,lon = [-90, -80]
,hoverinfo = 'none'
,marker_size = 10
,marker_color = 'rgb(65, 105, 225)' # blue
,marker_symbol = 'star'
,showlegend = False
)
fig.update_geos(
visible=False, resolution=110, scope="usa",
showcountries=True, countrycolor="Black",
showsubunits=True, subunitcolor="Black"
)
fig.show()
工作密度地图盒
d = {'Location': ['Point A', 'Point B'], 'lat': [30, 40], 'long': [-90, -80], 'z': [100,200]}
df = pd.DataFrame(data=d)
fig = px.density_mapbox(df
,lat='lat'
,lon='long'
,z='z'
,hover_name='Location'
,center=dict(lat=38.5, lon=-96)
,range_color = [0, 200]
,zoom=2
,radius=50
,opacity=.5
,mapbox_style='open-street-map')
fig.add_scattermapbox(lat = [30, 40]
,lon = [-90, -80]
,hoverinfo = 'none'
,marker_size = 6
,marker_color = 'rgb(0, 0, 0)'
# ,marker_symbol = 'star'
,showlegend = False
)
fig.show()
尝试 #1 - 只需设置 marker_symbol = 'star'
取消对marker_symbol = 'star' 的注释,这将适用于mapbox 的高级样式,完全删除了散点。
d = {'Location': ['Point A', 'Point B'], 'lat': [30, 40], 'long': [-90, -80], 'z': [100,200]}
df = pd.DataFrame(data=d)
fig = px.density_mapbox(df
,lat='lat'
,lon='long'
,z='z'
,hover_name='Location'
,center=dict(lat=38.5, lon=-96)
,range_color = [0, 200]
,zoom=2
,radius=50
,opacity=.5
,mapbox_style='open-street-map')
fig.add_scattermapbox(lat = [30, 40]
,lon = [-90, -80]
,hoverinfo = 'none'
,marker_size = 6
,marker_color = 'rgb(0, 0, 0)'
,marker_symbol = 'star'
,showlegend = False
)
fig.show()
尝试 #2 - 在散点图顶部添加密度地图框
在scattergeo 之上添加density_mapbox 会产生相同的地理图,但仅此而已。有密度图框图例,但没有热图。
d = {'Location': ['Point A', 'Point B'], 'lat': [30, 40], 'long': [-90, -80], 'z': [100,200]}
df = pd.DataFrame(data=d)
fig = go.Figure(go.Scattergeo())
fig.add_scattergeo(lat = [30, 40]
,lon = [-90, -80]
,hoverinfo = 'none'
,marker_size = 10
,marker_color = 'rgb(65, 105, 225)' # blue
,marker_symbol = 'star'
,showlegend = False
)
fig.add_densitymapbox(lat=df['lat'],
lon=df['long'],
z=df['z'],
radius=50,
opacity=.5
)
fig.update_geos(
visible=False, resolution=110, scope="usa",
showcountries=True, countrycolor="Black",
showsubunits=True, subunitcolor="Black"
)
fig.show()
【问题讨论】: