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

如何获取pandas绘制的柱状图中各柱体元素的颜色

获取pandas柱状图柱体颜色的方法

你之前使用的get_lines()只能获取折线图生成的Line2D类型对象,柱状图的柱体属于Patch类型,全部存储在axes对象的patches属性中。

pandas绘制多列分组柱状图时,patches的排序规则为:按行遍历每一组的所有列柱体,比如示例中2行2列的数据集,patches顺序为:col1第一行柱、col2第一行柱、col1第二行柱、col2第二行柱。因此要获取某一列的统一柱体颜色,只需取该列第一个柱体的填充色即可。

以下是修正后的可运行代码,同时实现了你需要的均值水平参考线需求:

"""Access bar plot colors and add mean reference lines."""

import pandas as pd
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
ax = df.plot(kind='bar')

# 统计列数,获取每列对应的柱体颜色
col_count = len(df.columns)
col_color_list = []
for col_idx in range(col_count):
    # 取当前列第一个柱体的填充色
    cur_color = ax.patches[col_idx].get_facecolor()
    col_color_list.append(cur_color)
    print(f"{df.columns[col_idx]} 柱体颜色:{cur_color}")

# 为每列添加与柱体同色的均值水平参考线
for col_idx, col_name in enumerate(df.columns):
    col_mean = df[col_name].mean()
    ax.axhline(y=col_mean, color=col_color_list[col_idx], linestyle='--', label=f"{col_name}均值")

# 渲染图例
ax.legend()

如果需要获取柱体的边框颜色,将get_facecolor()替换为get_edgecolor()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:57:02