You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Plotly Dash基于DataFrame的Type列给地图点设置不同颜色的问题

问题:Python Dash地图点位无法按Type列设置不同颜色

你的代码核心问题是循环筛选出对应Type的子集后,没有使用子集数据,反而一直用原DataFrame的全量数据,导致所有trace都渲染了全部点位,颜色被叠加覆盖,看起来没有区分效果。另外还需要确保color字典包含所有Type的唯一值,避免键不存在报错。

修复后的代码

def update_map(df):
    traces = []
    # 示例color字典,需匹配你实际的Type值
    color = {
        "类型1": "#FF6B6B",
        "类型2": "#4ECDC4",
        "类型3": "#45B7D1"
    }

    for type_val in df['Type'].unique():
        df_by_Type = df[df['Type'] == type_val]
        traces.append(go.Scattermapbox(
            # 替换为筛选后的子集数据
            lat=df_by_Type['Latitude'],
            lon=df_by_Type['Longitude'],
            mode='markers',
            customdata=df_by_Type.loc[:, ['Type']],
            hovertemplate="<b>%{text}</b><br><br>Type: %{customdata[0]}<br><extra></extra>",
            showlegend=True,  # 开启图例便于区分类型
            marker=go.scattermapbox.Marker(
                size=20,
                color=color[type_val]
            ),
            text=df_by_Type['Name'],
            name=type_val
        ))

    return {
        'data': traces,
        'layout': go.Layout(
            hovermode='closest',
            height=900,
            mapbox=dict(
                accesstoken='pk.eyJ1Ijoia29zdGFzc2FuIiwiYSI6ImNsaHJ5aW56OTBrNHgzaW9hMzNiY3lvd24ifQ.PtLxYEMkBft7PXkCgUqpDg',
                bearing=0,
                center=go.layout.mapbox.Center(
                    lat=56.0,
                    lon=-4.0
                ),
                pitch=0,
                zoom=5
            )
        )
    }

关键修改点

  • 把循环变量type改为type_val,避免和Python内置关键字冲突
  • 所有点位相关字段(lat、lon、customdata、text)替换为筛选后的df_by_Type子集,确保每个trace只渲染对应Type的点位
  • 开启showlegend=True,直观展示不同Type对应的颜色
  • 补充了color字典示例,需根据你的实际Type值调整颜色映射

额外优化建议

如果Type值较多,可自动生成颜色映射避免手动配置:

from plotly.colors import qualitative
unique_types = df['Type'].unique()
color = dict(zip(unique_types, qualitative.Plotly[:len(unique_types)]))

内容的提问来源于stack exchange,提问作者Konstantinos Sideris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:58:38