在density_mapbox中添加自定义店铺图标技术咨询
在Plotly的density_mapbox热力图上添加自定义店铺图标
一、正确使用内置符号(如你当前用的star)
确保Scattermapbox轨迹与热力图绑定在同一个Figure实例中,通过marker.symbol指定内置符号即可:
import plotly.graph_objects as go # 初始化热力图(假设你已有lat_list、lon_list、value_list数据) fig = go.Figure(go.Densitymapbox( lat=lat_list, lon=lon_list, z=value_list, radius=12 # 调整热力图半径 )) # 添加内置star符号的店铺点位 fig.add_scattermapbox( lat=[39.9042, 31.2304], # 店铺纬度列表 lon=[116.4074, 121.4737], # 店铺经度列表 mode='markers', marker=dict( size=18, symbol='star', # Plotly内置符号,可选值还有'circle', 'square', 'diamond'等 color='#ff4500', # 符号颜色 opacity=0.8 ), text=['北京门店', '上海门店'], # 鼠标悬停显示的店铺名称 hoverinfo='text' ) # 配置地图基础参数 fig.update_layout( mapbox_style='carto-darkmatter', # 可选地图样式 mapbox_center=dict(lat=35.8617, lon=104.1954), # 地图中心坐标 mapbox_zoom=5, height=600 ) fig.show()
二、添加自定义店铺图标
如果需要用自己的店铺Logo,直接通过marker.image指定图标URL(本地路径或线上链接均可),建议使用透明背景的PNG/SVG格式:
# 在已有热力图的基础上添加自定义图标 fig.add_scattermapbox( lat=[30.2741, 23.1291], lon=[120.1551, 113.2644], mode='markers', marker=dict( size=25, image='https://example.com/shop-logo.png', # 替换为你的图标地址 allowoverlap=True, # 强制图标显示在热力图上层 opacity=0.9 ), text=['杭州旗舰店', '广州分店'], hoverinfo='text' ) fig.show()
注意事项
- 本地图标路径需确保程序可访问,或转为base64编码嵌入代码(避免路径问题)
- 调整
size参数适配地图缩放级别,避免图标过大/过小 - 若图标被热力图遮挡,务必设置
allowoverlap=True
内容的提问来源于stack exchange,提问作者Haroldo Machado
相关产品推荐
相关产品推荐

