我开始制作一个可重复的例子来提出另一个问题而且甚至无法解决这个问题。无论如何,我试图将分类数据绘制成刻面条形图。所以我使用CO3(底部的代码)创建了自己的数据集。只是简单地绘制x似乎是正常的:
但是当我尝试刻薄时,它会变得很时髦。显示一切都是平等的。
这没有任何意义,因为它表明每个小组都有相同比例的出局,而ftable
数据并未证明这一点:
Type Quebec Mississippi
outcome Treatment
none nonchilled 7 6
chilled 4 7
some nonchilled 6 4
chilled 5 5
lots nonchilled 5 4
chilled 6 3
tons nonchilled 3 7
chilled 6 6
我做错了什么?
library(ggplot2)
set.seed(10)
CO3 <- data.frame(CO2[, 2:3], outcome=factor(sample(c('none', 'some', 'lots', 'tons'),
nrow(CO2), rep=T), levels=c('none', 'some', 'lots', 'tons')))
CO3
x <- ggplot(CO3, aes(x=outcome)) + geom_bar(aes(x=outcome))
x
x + facet_grid(Treatment~., margins=TRUE)
with(CO3, ftable(outcome, Treatment, Type))
编辑:Brian描述的这个问题很容易让你在需要堆叠数据时发现自己。为了解决这个问题直到ggplot的下一个版本(我假设Hadley意识到这个问题)我创建了一个愚蠢的小便利函数来快速将ID列添加到数据框中:
IDer <- function(dataframe, id.name="id"){
DF <- data.frame(c=1:nrow(dataframe), dataframe)
colnames(DF)[1] <- id.name
return(DF)
}
IDer(mtcars)
答案 0 :(得分:5)
0.9.0版本的ggplot2
中存在关于facet_grid()
和重复行的错误。见https://github.com/hadley/ggplot2/issues/443
解决方法是添加一个虚拟列以打破重复。
CO3$dummy <- 1:nrow(CO3)
ggplot(CO3, aes(x=outcome)) +
geom_bar(aes(x=outcome)) +
facet_grid(Treatment~., margins=TRUE)