python - 图表中条形图的颜色基于数据框同一行中的 bool 值

标签 python pandas matplotlib

我正在尝试构建一个条形图,其中条形的颜色受数据框中同一行上 bool 值的影响。在这个例子中,当 sales 被放置时,我希望 has_chocolateFalse 是红色的,True 是绿色的在条形图中。

import pandas as pd
import matplotlib.pyplot as plt
cake_sales_df

index     cake          sales          has_chocolate
0         empire        15             False
1         tea cake      25             True
2         snowball      20             True
3         hob-nob       50             True
4         lotus         3              False

到目前为止我尝试使用外部函数或条件

cake_sales_df.plot(x='cake', y='sales',
                        kind='bar', color = 'green' if cakes_sales_df['has_chocolate'] == True else 'red')

我都犯了同样的错误

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

最佳答案

您可以旋转数据:

(df.pivot(index='cake',columns='has_chocolate',values='sales')
   .plot.bar(stacked=True)
)

输出:

enter image description here

或者你可以使用seaborn:

import seaborn as sns

sns.barplot(data=df, x='cake', y='sales', hue='has_chocolate',
            palette={True:'g', False:'r'},
            dodge=False)

输出:

enter image description here

关于python - 图表中条形图的颜色基于数据框同一行中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65008989/

相关文章:

python - 在 seaborn 中绘制 datetime.time

numpy - Python Pandas 中的慢速随机实现

python - 第一个纪元后的神经网络生成 NaN 值作为输出、损失

python - 将注释文本与颜色条标签文本对齐

python - 为数组中的 nan 和 inf 值创建掩码

python - 如何连接两个具有重复列名的数据框?

python - 如何从 Graphlab 迁移到 pandas

python - Pandas 写入 CSV 指定 dtype

python - 如何装饰对象方法?

python - 一种有效计算一个标记像素与其最近的不同标记像素的距离的算法