1

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

我目前正在使用此代码:

(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+]}
4

2 回答 2

2

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

(ggplot(...)
...
+ geom_bar(show_legend=False)
+ scale_fill_manual(values=['red', 'blue', 'green', 'cyan', 'violet', '#AABBCC'])
)
于 2020-10-22T19:47:02.657 回答
1

删除图例的另一个选项是:

(ggplot(...)
...
+ theme(legend_position = element_blank())

或将其放在另一个位置:

(ggplot(...)
...
+ theme(legend_position = 'top')

scale_fill_manual是手动包含颜色值的最佳方式,也可能是唯一方式。

于 2021-05-04T17:55:57.573 回答