首页 > 解决方案 > 在 plotnine 中为 geom_bar 更改每个条的颜色

问题描述

我正在对单个变量(基于调查响应)进行计数,绘制一些条形图。

我目前正在使用此代码:

(ggplot(df, aes ('age_cat3')) +
geom_bar(color='#F6F6F6', fill='#0C475B') +
theme_minimal() +
xlab("") +
ggtitle('Age distribution in total sample'))

这会产生:

在此处输入图像描述

我希望每个酒吧都有不同的颜色。我知道我可以通过添加 [fill="age_cat3"] 来做到这一点,所以:

(ggplot(df, aes ('age_cat3', fill='age_cat3')) +
geom_bar() +
theme_minimal() +
xlab("") +
ggtitle('Age distribution in total sample'))

这会产生:

在此处输入图像描述

这个解决方案有两个问题:

  1. 现在有一个图例,我似乎无法用“scale_color_discrete(guide=False)”删除它

  2. 我似乎无法控制颜色或颜色主题。

任何有关删除图例的建议都会很棒,但理想情况下,无需使用“填充”即可更改条形颜色的某种方式会很棒。

(另外,抱歉图片太大了。我不太清楚如何附加小图片)

可重现的数据:

df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8 , 9, 10],
                   'age_cat3': [15-24, 15-24, 25-34, 35-44, 35-44, 35-44, 35-44, 45-59, 45-59, 60+]}

标签: pythonplotnine

解决方案


您可以使用 geom/layer 参数关闭图例,show_legend=False并且可以使用手动比例来设置fill颜色。

(ggplot(...)
...
+ geom_bar(show_legend=False)
+ scale_fill_manual(values=['red', 'blue', 'green', 'cyan', 'violet', '#AABBCC'])
)

推荐阅读