【问题标题】:Changing color of each bar for geom_bar in plotnine在 plotnine 中为 geom_bar 更改每个条的颜色
【发布时间】:2020-10-22 14:27:28
【问题描述】:

我正在对单个变量(基于调查回复)绘制九个计数的条形图。

我目前正在使用此代码:

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

【问题讨论】:

    标签: python plotnine


    【解决方案1】:

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

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

    【讨论】:

    • 两个答案都很完美!非常感谢。
    【解决方案2】:

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

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

    或将其放在另一个位置:

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2021-04-14
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多