在 plotnine 中更改 geom_bar 每个条的颜色
Changing color of each bar for geom_bar in plotnine
我正在为单个变量(基于调查回复)绘制一些条形图,绘制九个计数。
我目前正在使用此代码:
(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'))
这会产生:
这个解决方案有两个问题:
现在有一个图例,我似乎无法用“scale_color_discrete(guide=False)”删除它
我似乎无法控制颜色或颜色主题。
任何关于删除图例的建议都会很棒,但理想情况下,无需使用“填充”即可更改条形颜色的方法会很棒。
(另外,抱歉,图片太大了。我不太确定如何附加小图片)
可重现的数据:
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+]}
您可以使用 geom/layer 参数 show_legend=False
关闭图例,您可以使用手动比例设置 fill
颜色。
(ggplot(...)
...
+ geom_bar(show_legend=False)
+ scale_fill_manual(values=['red', 'blue', 'green', 'cyan', 'violet', '#AABBCC'])
)
另一个删除图例的选项是:
(ggplot(...)
...
+ theme(legend_position = element_blank())
或者放在其他位置:
(ggplot(...)
...
+ theme(legend_position = 'top')
scale_fill_manual
是最好的,也许是唯一手动包含颜色值的方法。