R 按类别绘制平均值和标准偏差

R 按类别绘制平均值和标准偏差,r,plot,mean,R,Plot,Mean,我试着用平均值和标准差来绘制一个三级因子的图 (在互联网上搜索了两个小时,然后查看了Rbook和Rgraphs的书,我仍然没有找到答案。我认为这是因为这是一个非常简单的问题。) 我有一个简单的数据框架,有三列:我的类别、平均值、sd 我想用类别的平均值和它的sd条做一个绘图,就像 我的数据框看起来像这样 color mean.temp sd black 37.93431 2.267125 red 37.

我试着用平均值和标准差来绘制一个三级因子的图

(在互联网上搜索了两个小时,然后查看了Rbook和Rgraphs的书,我仍然没有找到答案。我认为这是因为这是一个非常简单的问题。)

我有一个简单的数据框架,有三列:我的类别、平均值、sd

我想用类别的平均值和它的sd条做一个绘图,就像

我的数据框看起来像这样

  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()