web-dev-qa-db-ja.com

Rのカテゴリごとに平均と標準偏差をプロットします

私は、平均値と標準偏差のバーを3レベルの因子で単純なプロットにプロットしようとしています。インターネットで2時間検索した後、RbookとRgraphsの本を確認しても、まだ答えが見つかりません。これは非常に単純な質問だからだと思います...さらに、Rがどのように機能するかはまだよくわかりません。

カテゴリ、平均、標準偏差の3つの列を持つ単純なデータフレームがあります。

this one のように、カテゴリ別の平均とそのsdバーを使用してプロットを実行したいと思います。

私のデータフレームは次のようになります

  color     mean.temp      sd        
  black     37.93431      2.267125        
  red       37.01423      1.852052        
  orange    36.61345      1.339032

このばかげた質問をしてすみませんが、私の簡単な質問に対する簡単な答えを心から見つけることができませんでした。

よろしくお願いします(Rプロットに関する基本的な文献についてのアドバイスもありがたいです)。

7
Maria

データを保持する_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))
_

ここで、最初に平均をドットとしてプロットし、水平方向(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))))
_

次に、標準偏差を線としてプロットします。 3つの別々のlinesコマンドを使用することもできます。これは、読みやすい場合があります。このように、最初にrbind()を介してデータを行列に収集します。 Rはこれらの行列を自動的にベクトルに変換し、リサイクルします。 NAsが存在するため、1行の終わりを次の行の始まりに結合しません。 (NAを削除して、何が起こるかを確認してください。)

_lines(rbind(1:3,1:3,NA),rbind(foo$mean.temp-foo$sd,foo$mean.temp+foo$sd,NA))
_

最後に、x軸に注釈を付けます。

_axis(side=1,at=1:3,labels=foo$color)
_

means with sds

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

出力

enter image description here

14
Silence Dogood