R 按类别绘制平均值和标准偏差
我试着用平均值和标准差来绘制一个三级因子的图 (在互联网上搜索了两个小时,然后查看了Rbook和Rgraphs的书,我仍然没有找到答案。我认为这是因为这是一个非常简单的问题。) 我有一个简单的数据框架,有三列:我的类别、平均值、sd 我想用类别的平均值和它的sd条做一个绘图,就像 我的数据框看起来像这样R 按类别绘制平均值和标准偏差,r,plot,mean,R,Plot,Mean,我试着用平均值和标准差来绘制一个三级因子的图 (在互联网上搜索了两个小时,然后查看了Rbook和Rgraphs的书,我仍然没有找到答案。我认为这是因为这是一个非常简单的问题。) 我有一个简单的数据框架,有三列:我的类别、平均值、sd 我想用类别的平均值和它的sd条做一个绘图,就像 我的数据框看起来像这样 color mean.temp sd black 37.93431 2.267125 red 37.
color mean.temp sd
black 37.93431 2.267125
red 37.01423 1.852052
orange 36.61345 1.339032
很抱歉问了这个愚蠢的问题,但我真的找不到简单问题的简单答案。创建一个
数据框架。
保存数据:
foo <- data.frame(color=c("black","red","orange"),
mean.temp=c(37.93431,37.01423,36.61345),
sd=c(2.267125,1.852052,1.339032))
接下来,我们将标准偏差绘制为直线。您还可以使用三个独立的行
命令,这可能更容易阅读。这样,我们首先通过rbind()
将数据收集到矩阵中。R将自动将这些矩阵转换为向量并循环使用。NA
s在那里,因此我们不会将一行的末尾连接到下一行的开头。(请尝试卸下NAs,看看会发生什么。)
最后,注释x轴:
axis(side=1,at=1:3,labels=foo$color)
带有
ggplot
:
读取数据:
df=read.table(text=' color mean.temp sd
1 black 37.93431 2.267125
2 red 37.01423 1.852052
3 orange 36.61345 1.339032',header=TRUE)
绘图:
ggplot(df, aes(x=color, y=mean.temp)) +
geom_errorbar(aes(ymin=mean.temp-sd, ymax=mean.temp+sd), width=.2) +
geom_line() +
geom_point()
输出
这可能会有所帮助(如果您不介意使用ggplot2):非常感谢您的回答,非常好的逐步解释。这正是我需要的。有没有办法在每一行中添加经典的“平面箭头”?我使用了函数“箭头”而不是“线”,我这样做了:箭头(c(1,2,3),foo$mean.temp+foo$sd,c(1,2,3),foo$mean.temp foo$sd,code=3,angle=90,length=0.05)。再次感谢您的好意和详细解释
df=read.table(text=' color mean.temp sd
1 black 37.93431 2.267125
2 red 37.01423 1.852052
3 orange 36.61345 1.339032',header=TRUE)
ggplot(df, aes(x=color, y=mean.temp)) +
geom_errorbar(aes(ymin=mean.temp-sd, ymax=mean.temp+sd), width=.2) +
geom_line() +
geom_point()