我正在尝试在ggplot2中制作一个非常简单的堆积条形图,但由于某种原因它不起作用并且我收到错误消息:“pmin(y,0)中的错误:找不到对象'y' ”。问题出在哪里?
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
答案 0 :(得分:3)
我不确定我是否理解你想要计算什么以及你想要堆叠什么,但是使用你的一些数据和这段代码
qplot(factor(freq), data=df.harvest, geom="bar", fill=factorvar)
我明白了,
这就是你在寻找什么?
答案 1 :(得分: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”并且它给出了错误。此外,默认情况下,该位置使用stack
。
答案 2 :(得分:1)
我不确定错误消息的含义,但是如果您使用fillvar = c(1,2,3,1,2,3,1,2,3)
,(代替您的fillvar变量),您将获得一个堆积条形图。