【问题标题】:How do I color by factors of a categorical variable for faceted barplots?如何按分面条形图的分类变量因子着色?
【发布时间】:2014-08-21 18:51:18
【问题描述】:

我的问题与 ggplot 中的情节有关。如果您加载 ggplot2 附带的“钻石”数据集,则运行每个图像下方的代码应该可以工作。

我正在尝试生成这样的图表:

library(ggplot2)

#First plot
p1 <- ggplot(diamonds, aes(color)) + geom_bar(aes(group = cut, y = ..density..))
p1 <- p1 + facet_wrap(~cut)
p1

但我想按因子为每个方面的每个条形着色,如下图所示:

#Second plot
p2 <- ggplot(diamonds, aes(color)) + geom_bar(aes( y = ..density.., fill = color)) 
p2 <- p2 + facet_wrap(~cut)
p2

问题是当我尝试同时调用“group =”和“fill =”时,它们似乎相互干扰;当“group”也被调用时,ggplot 似乎忽略了“fill”命令。

对 group 的调用很重要,因为它强制 y 轴为每个 facet 缩放,因此每个 facet 内的密度加起来为 1。但是,我希望能够使用 fill 在视觉上轻松区分组颜色。

我该如何解决这个问题?

【问题讨论】:

标签: r ggplot2


【解决方案1】:

问题在于..density..。它通常是一种方便的捷径,但在像这种更复杂的情况下,自行计算通常更容易:

library(dplyr)
diam2 <- diamonds %>% group_by(cut) %>% 
    mutate(ncut = n()) %>%
    group_by(cut, color) %>%
    summarize(den = n() / first(ncut))

ggplot(diam2, aes(x = color, fill = color, y = den)) +
    geom_bar(stat = "identity") +
    facet_wrap(~ cut)

我应该补充一点,将我的情节与您的p1 进行比较,形状相同,但比例看起来有点不同(我的整体略低)。我不知道为什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2014-04-13
    • 2018-03-21
    • 2018-01-13
    • 2011-10-17
    相关资源
    最近更新 更多