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

pandas绘制bar柱状图为不同变量指定edgecolor边缘色结果异常如何解决

问题原因

pandas 的 plot.bar 方法接收列表格式的 edgecolor 参数时,默认是按所有柱体的绘制顺序依次匹配颜色,而非按数据列分组匹配。你传入的两个颜色会循环作用在每一个柱体上,自然就出现了同一列的柱体边缘色交替变化的问题。

解决方案

你可以在绘图完成后,分别获取两列对应的柱体容器,批量设置边缘色即可,修改后的代码如下:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"col1":[1,2,4,5,6], "col2":[4,5,1,2,3]})

def amounts(df):
    fig, ax = plt.subplots(1,1, figsize=(3,4))
    df.filter(['col1','col2']).plot.bar(
        ax=ax, stacked=True, fill=False, linewidth=2, rot=0
    )
    # 分别为两列柱体设置边缘色
    ax.containers[0].set_edgecolor('red')
    ax.containers[1].set_edgecolor('green')

    ax.set_xlabel("")
    plt.tight_layout()
    plt.show()

amounts(df)

补充说明

pandas 内置绘图是对 matplotlib 能力的上层封装,遇到精细化样式控制需求时,直接操作 matplotlib 返回的画布、轴、图形元素对象会比直接传参数给pandas的plot方法灵活很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:05