我试图通过三个级别的因子绘制一个简单的平均值和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)
产量

创建一个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)
