【发布时间】:2010-09-01 14:22:57
【问题描述】:
我是 ggplot2 的新手,对生成堆积条形图有疑问。我检查了这本书和专门的网页,但无法解决问题。我有两个因素,其中一个有 2 个级别(存在 - 不存在),其他 10 个级别。让我们称这两个“变量”和“水果”。
我想创建一个堆积条形图,其中每个条形反映一种水果,并且“变量”中存在-不存在观察的数量相互堆叠。这相对容易(参见下面图 1 的代码),但我还希望条形图和 y 轴将“变量”中存在-不存在的计数表示为百分比。换言之,所有条形应具有相同的高度(总共反映 100%),并且存在-不存在观察的计数应转换为百分比。
我可以使用 ..count..*100/sum(..count..) 将 y 轴比例更改为百分比,但我无法理解如何转换实际条形。我创建了另一个带有刻面的图(下面图 2 的代码),它在百分比方面达到了我想要的效果,但我更喜欢两个条形图。有谁知道如何实现这一目标?我提供了虚拟数据和可重现的示例。谢谢你的帮助。
史蒂夫
dat <- data.frame( fruit=c("Apple", "Apple", "Orange", "Orange", "Orange", "Orange",
"Orange", "Pear", "Pear", "Pear"), variable=c("Present", "Absent",
"Present", "Present", "Present", "Present", "Absent", "Absent",
"Absent", "Present") )
# stacked bar plot
ggplot(dat, aes(x = fruit, fill = variable) ) +
geom_bar( aes(y = ..count..*100/sum(..count..) ) ) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha( c("firebrick", "dodgerblue4"), 1) )
# with faceting
ggplot(dat, aes(x = variable, fill = variable) ) +
geom_bar( aes(y = ..count..*100/sum(..count..) ) ) +
facet_grid(. ~ fruit) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha( c("firebrick", "dodgerblue4"), 1) )
【问题讨论】: