【问题标题】:How can I color bars in a faceted and grouped ggplot如何在多面和分组的ggplot中着色条
【发布时间】:2021-10-25 09:15:35
【问题描述】:

我制作了以下图表(我使用“npk”数据集作为虚拟数据,因为我无法共享原始数据 - 但图表的系统性保持不变):

library(ggplot2)
library(scales)

ggplot(npk,aes(x=block,group=N)) + 
geom_bar(aes(y = ..prop..)) +
facet_grid(~ N) +
xlab("blocks") +
scale_y_continuous(labels = percent) +
theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(),
     legend.title=element_blank())

区块:区块编号 1-6
N:二进制变量1/0

现在我想根据块的数量为每个条(=块)着色(我知道,这在这里没有多大意义,因为每个块(对于变量 N)的比例是一样,但是对于我的原始数据,我有不同的比例,所以这是有道理的......)。 除了面对情节我还必须使用“group=N”,因为我需要每个块的比例。

我该怎么做?我尝试了许多不同的方法来声明这些块的颜色,但不幸的是我无法为每个块着色,只能将所有块一起用灰色或其他特定颜色...

感谢您的帮助!非常感谢! 玛蒂娜

【问题讨论】:

  • 试试aes(..., fill = block)
  • 感谢 stefan 的建议,但不幸的是颜色并没有改变...条保持灰色...我在两个 aes()-codeblocks 中都尝试过...

标签: r ggplot2


【解决方案1】:

这似乎确实是一件棘手的事情!将来自herehere 的答案放在一起,您可以通过稍微调整它用于计算y 的方法来做到这一点,以便考虑按方面进行分组而不通过包含fill 覆盖group:

library(tidyverse)
library(scales)

ggplot(npk, aes(x = block)) +
  geom_bar(aes(
    y = ..count.. / tapply(..count.., ..PANEL.., sum)[..PANEL..],
    fill = block
  )) +
  facet_grid( ~ N) +
  xlab("blocks") +
  ylab("Percentage") +
  scale_y_continuous(labels = percent) +
  theme(
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank(),
    legend.title = element_blank()
  )

reprex package (v2.0.0) 于 2021 年 10 月 25 日创建

【讨论】:

  • 嗨,安德鲁,非常感谢,解决方案完美运行:)
【解决方案2】:

可以通过预先计算比例并使用 geom_col 代替 geom_bar 来解决问题吗?

library(tidyverse)

npk %>% 
  slice_sample(n = 15) %>% ## so that percentages vary
  group_by(block, N) %>% 
  count(name = "count") %>% 
  group_by(block) %>% 
  mutate(prop = count/sum(count)) %>% 
  ungroup() %>% 
  ggplot(aes(x=block,y=prop)) + 
  geom_col(aes(fill = block)) +
  facet_grid(~ N)

reprex package (v2.0.1) 于 2021 年 10 月 25 日创建

【讨论】:

  • 嗨 kene,非常感谢您的解决方案,它也可以完美运行,但我注意到我必须进行一些调整才能使用我的数据获得相同的结果 - 我已经重写了命令“ group_by(block)" 到 "group_by(N)" 因为我想要与每个块的 N 相关的比例。当我以这种方式调整您的代码时,它完美地工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多