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

如何为Plotly Express柱状图中的指定柱子设置自定义颜色?

问题原因

Plotly Express 的 color_discrete_sequence 参数需配合 color 分组参数使用:只有当你通过 color 指定了数据分组列时,才会按照分组数量依次取用序列中的对应颜色。你当前的代码没有设置 color 参数,所有柱子默认归属同一分组,只会取序列的第一个颜色生效,因此修改序列第6位的颜色值不会有任何效果。

解决方法

方法1:新增高亮标记列适配原生参数逻辑

不需要修改原有代码结构,仅新增一个标记列即可实现需求:

import plotly.express as px
import pandas as pd

data = {'Name':['2020/01', '2020/02', '2020/03', '2020/04',  
         '2020/05', '2020/07', '2020/08'],  
        'Value':[34,56,66,78,99,55,22]}
df = pd.DataFrame(data)
# 新增高亮标记字段,第六行设为不同分组
df['highlight'] = [0]*len(df)
df.loc[5, 'highlight'] = 1

fig=px.bar(df,
           x='Name',
           y='Value',
           color='highlight',
           color_discrete_sequence=['#ec7c34', '#609cd4'],
           showlegend=False) # 不需要展示图例可关闭
fig.show()

方法2:生成图表后直接修改柱子颜色

如果不想新增数据列,可以在图表生成后手动覆盖柱子的颜色配置:

import plotly.express as px
import pandas as pd

data = {'Name':['2020/01', '2020/02', '2020/03', '2020/04',  
         '2020/05', '2020/07', '2020/08'],  
        'Value':[34,56,66,78,99,55,22]}
df = pd.DataFrame(data)

fig=px.bar(df,x='Name',y='Value')
# 直接指定每个柱子的颜色
color_list = ['#ec7c34']*len(df)
color_list[5] = '#609cd4'
fig.update_traces(marker_color=color_list)
fig.show()

内容的提问来源于stack exchange,提问作者Mauro Assis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:39:00