ggplot2堆积条形图 - 找不到对象y

时间:2012-04-02 07:51:08

标签: r ggplot2

我正在尝试在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

3 个答案:

答案 0 :(得分:3)

我不确定我是否理解你想要计算什么以及你想要堆叠什么,但是使用你的一些数据和这段代码

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

我明白了,

qplot(factor(freq), data=df.harvest, geom="bar", fill=factor(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变量),您将获得一个堆积条形图。