使用ggplot绘制误差线 - 出现错误

4

我正在尝试创建一条折线图,在添加误差线时一直出现错误(因为我刚开始接触 R,所以请原谅!)。但我不知道出了什么问题——希望能得到帮助!

Group = c("a","a","b","b","a","a","b","b")
Time = c(1,2,1,2,1,2,1,2)
Code = c("A","A","A","A","B","B","B","B")
Mean = (2,6,7,5,6,1,2,8)
SE = c(1.9,1.7,1.5,1.3,2,1.8,2.3,1.5)
dataset=data.frame(Group,Time,Code,Mean,SE)

ggplot(data=dataset) + geom_line(aes(x=Time,y=Mean,colour=Code,linetype=Group))+ 
  scale_x_continuous(breaks=c(1,2)) + 
  scale_linetype_manual(values=c(2,1)) + 
  geom_point(aes(x=Time,y=Mean,colour=Code,linetype=Group)) + 
  geom_errorbar(aes(ymin=Mean-SE,ymax=Mean+SE),width=.1,position=dodge)

问题与最后一行有关——没有它,代码可以正常工作。但是加上它后,会出现以下错误:Error in eval(expr, envir, enclos) : object 'x' not found
那么我在geom_errorbar行上做错了什么?
1个回答

5

我建议首先尝试在ggplot()函数中定义美学元素,并且只需这样做一次。例如:

ggplot(data=dataset,aes(x=Time,y=Mean,colour=Code,linetype=Group,ymin=Mean-SE,ymax=Mean+SE)) + 
geom_line() + 
scale_x_continuous(breaks=c(1,2)) + 
scale_linetype_manual(values=c(2,1)) + 
geom_point() + 
geom_errorbar(width=.1,position='dodge')

这是因为ggplot不能保证传递所有原始数据集中的变量,依赖这些变量可能导致奇怪的结果。

编辑:我刚注意到x从未被定义为geom_errorbar,在ggplot()geom_errorbar()aes中添加x=Time可以解决问题。但是,后者真的不推荐。

如果您提供示例数据(例如dput),我将能够为您提供进一步帮助。


是的 - 我应该提供一些数据:- 已添加在上面 - Casey
啊!就是这样——缺少x。我会尝试在ggplot之后定义aes。我想我以前试过,但不知道为什么它没有起作用。不过,你的建议很有道理!非常感谢! - Casey
没问题。我试了一下我的代码,现在可以运行了(我不得不在“dodge”上添加引号)。 - Jonathan

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