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

Mar*_*ria 7 plot r mean

我试图通过三个级别的因子绘制一个简单的平均值和sd barrs的情节.经过两个小时的互联网搜索,然后检查Rbook和Rgraphs书,我仍然没有找到答案.我认为这是因为这是一个非常简单的问题......而且我还不太了解R的工作方式.

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

我想用类别和它的sd barrs做一个情节,就像 这个

我的数据框看起来像这样

  color     mean.temp      sd        
  black     37.93431      2.267125        
  red       37.01423      1.852052        
  orange    36.61345      1.339032
Run Code Online (Sandbox Code Playgroud)

我很抱歉问这个愚蠢的问题,但我真的找不到任何简单的问题.

非常感谢您提前(我也很感激有关R图的基本文献的任何建议).

Sil*_*ood 14

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)
Run Code Online (Sandbox Code Playgroud)

绘图:

 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()
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述


S. *_*ica 6

创建一个data.frame保存您的数据:

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))
Run Code Online (Sandbox Code Playgroud)

现在,我们首先将均值绘制为点,确保水平 ( xlim) 和垂直 ( ylim)有足够的空间,抑制 x 轴注释 ( xaxt="n") 和所有轴标记 ( xlab="", ylab="")。

plot(1:3,foo$mean.temp,pch=19,xlab="",ylab="",xaxt="n",xlim=c(0.5,3.5),
    ylim=c(min(foo$mean.temp-foo$sd),max((foo$mean.temp+foo$sd))))
Run Code Online (Sandbox Code Playgroud)

接下来,我们将标准偏差绘制为线。您还可以使用三个单独的lines命令,它们可能更易于阅读。这样,我们首先通过 将数据收集到矩阵中rbind()。R 会自动将这些矩阵转换为向量并回收它们。该NAs为有,所以我们没有一个行的末尾加入到下一个的开始。(尝试移除 NA,看看会发生什么。)

lines(rbind(1:3,1:3,NA),rbind(foo$mean.temp-foo$sd,foo$mean.temp+foo$sd,NA))
Run Code Online (Sandbox Code Playgroud)

最后,注释 x 轴:

axis(side=1,at=1:3,labels=foo$color)
Run Code Online (Sandbox Code Playgroud)

有sds的意思