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

Python中Plotly未遵守预设颜色字典:Streamlit聚类可视化交互颜色变动问题

问题根因

你当前使用的color_continuous_scale是连续色阶配置,Plotly会自动根据当前传入数据中聚类编号的最大、最小值拉伸色阶范围,因此聚类数量变化时,同一个编号对应的色阶位置会发生偏移,最终导致颜色变化。

最优解决方案

直接使用Plotly的离散颜色映射参数color_discrete_map,硬绑定每个聚类编号和对应颜色,不需要手动裁剪颜色列表,只要聚类编号不变,颜色就不会变动。

修改后可用的代码如下:

def plot_model(cluster_model):
    cluster_color_dict = {
        1:'yellow',
        2:'CornflowerBlue',
        3:'orange',
        4:'green',
        5:'black',
        6:'fuchsia',
        7:'red',
        8:'aqua',
        9:'deepskyblue',
        10:'greenyellow'
    }
    # 将聚类列转为分类类型,避免Plotly将其识别为连续数值
    cluster_model['Clusters'] = cluster_model['Clusters'].astype('category')

    fig = px.scatter_3d(cluster_model,
                    x='NPHI',
                    y='RHOZ',
                    z='GR',
                    color='Clusters',
                    # 传入预定义的颜色映射字典
                    color_discrete_map=cluster_color_dict)

    fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
    fig.update_traces(marker_size=3)
    return fig

备选方案(保留连续色阶效果)

如果你需要保留连续色阶的展示样式,可以固定色阶的映射范围,避免自动拉伸,调整代码如下:

def plot_model(cluster_model):
    cluster_color_dict = {
        1:'yellow',
        2:'CornflowerBlue',
        3:'orange',
        4:'green',
        5:'black',
        6:'fuchsia',
        7:'red',
        8:'aqua',
        9:'deepskyblue',
        10:'greenyellow'
    }

    fig = px.scatter_3d(cluster_model,
                    x='NPHI',
                    y='RHOZ',
                    z='GR',
                    color='Clusters',
                    color_continuous_scale=list(cluster_color_dict.values()),
                    # 固定色阶的映射范围为1到最大支持聚类数10
                    range_color=[1,10])

    fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
    fig.update_traces(marker_size=3)
    return fig

注意事项

  • 如果后续需要支持超过10个聚类,提前在cluster_color_dict中补充对应的颜色键值对即可。
  • 确保cluster_color_dict的键类型和数据中Clusters列的类型完全匹配,比如列值为字符串时,键也要定义为字符串类型。

内容的提问来源于stack exchange,提问作者Francisco Colina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:57:03