我的问题与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
问题在于&#34; group =&#34;和&#34; fill =&#34;当我试图打电话给他们时,他们似乎互相干扰; ggplot似乎忽略了&#34; fill&#34;命令&#34; group&#34;也被称为。
对组的调用非常重要,因为它会强制y轴按比例缩放每个方面,因此每个方面内的密度总计为1.但是,我希望能够在视觉上轻松区分组使用填充颜色。
我该如何解决这个问题?
答案 0 :(得分:2)
问题在于..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
进行比较,形状是相同的但是尺度看起来有点不同(我的整体略低)。我不确定为什么。