ggplot2堆叠条形图 - 对象y未找到

8

我正在尝试在ggplot2中制作一个非常简单的堆积条形图,但出现了错误:“Error in pmin(y, 0) : object 'y' not found”。问题出在哪里?

factorvar <- c(1,1,1,2,2,2,3,3,3)
factorvar <- factor(factorvar, labels=c("Type", "Size", "Outcome"))
freq <- c(3,1,4,1,2,2,4,1,1)
fillvar <- c(1,1,1,2,2,2,3,3,3)
fillvar <- factor(fillvar)

df.harvest <- data.frame(fillvar,freq,factorvar)

harvest <- ggplot(df.harvest, aes(x=factorvar, y=freq, fill=fillvar)) + geom_bar()
harvest

3
如果你在 geom_bar 函数中加入 stat = "identity" 参数,会发生什么?即 geom_bar(stat = "identity") - Roman Luštrik
3个回答

3

我不确定你希望计算和叠加什么,但是使用你的一些数据和这段代码

qplot(factor(freq), data=df.harvest, geom="bar", fill=factorvar) 

我理解您的意思,这是您需要的内容:

qplot(factor(freq), data=df.harvest, geom="bar", fill=factor(factorvar))

请问这符合您的要求吗?


3
这篇文章很老,但我没有看到任何好的答案:
如果您提供了y轴,则应始终在geom_bar中指定参数。
您已经将频率作为y轴提供,并且不希望geom_bar为您计算它,因此必须指定geom_bar(stat = "identity")。
此外,这里的fillvar本质上与factorvar相同,使用一个作为轴,另一个作为填充颜色是没有意义的。
但是,如果它们不同,您还需要指定geom_bar(stat = "identity", position="dodge")或(stat = "identity", position="stack")。
默认情况下,stat会在您的情况下切换到"bin",并且会出现错误。默认情况下,position使用堆栈。

1

我不确定错误信息的含义,但如果您使用fillvar = c(1,2,3,1,2,3,1,2,3)(替换您的fillvar变量),您将获得一个堆积条形图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接