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

如何为pandas单栏barh水平柱状图单独指定各条形的颜色

pandas水平柱状图指定条形修改颜色解决方案

实现逻辑:pandas绘图返回的Axes对象中,所有条形都存储在patches属性列表里,水平柱状图barh的列表顺序为从下到上,和DataFrame的索引顺序完全对应,直接对指定位置的条形调用set_color()方法修改颜色即可,无需改动原有DataFrame结构、也不会破坏原有绘图布局参数。

代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 构造DataFrame
columns = ["Foo"]
data = [50, 201, 279]
index=["Item 1", "Item 2", "Item 3"]
df = pd.DataFrame(data=data, index=index, columns=columns)

# 原有绘图逻辑完全不变
ax = df.plot(kind="barh", color="#00576B", rot=0, legend=False, align='center', width=0.5)
ax.set_title("My title")
ax.set_ylabel("")
ax.set_xlabel("My label in foo")
ax.grid(True)
ax.set_axisbelow(True)

# 仅新增以下代码修改指定条形颜色
# 例:将Item 2(对应索引1,从0开始计数)改为红色,Item 3(对应索引2)改为橙色
ax.patches[1].set_color("#FF4C4C")
ax.patches[2].set_color("#FF9500")

plt.show()

按索引名批量配置颜色

如果不想手动记索引顺序,可直接基于DataFrame的索引名映射颜色:

color_mapping = {
    "Item 1": "#00576B",
    "Item 2": "#FF4C4C",
    "Item 3": "#FF9500"
}
for idx, index_name in enumerate(df.index):
    ax.patches[idx].set_color(color_mapping[index_name])

内容的提问来源于stack exchange,提问作者Cord Kaldemeyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:06:01