誤差線を表示

2019年02月04日 08:58

グラフを書くときに、誤差線(エラーバー)を表示したいことがあります。平均値±標準偏差、といった表示に加えて、正あるいは負のみを表示したい場合にどうするかを取りあげたいと思います。


(注)こちらのページを参考にしています。


Rにもともと入っているデータセット(iris)を使ってやってみます。

> iris.mean <- tapply(iris$Sepal.Length, iris$Species, mean) #Speciesという項目ごとにSepal.Lengthの平均値を求めます

> iris.sd <- tapply(iris$Sepal.Length, iris$Species, sd) #同様に標準偏差を求めます

> myplot <- barplot(iris.mean, ylim=c(0, 9)) #棒グラフで平均値を表示します



次に誤差線を表示します。

> arrows(myplot, iris.mean + iris.sd, myplot, iris.mean - iris.sd,angle=90, code=3)


棒グラフでのエラーバー(正と負両方)はこのように表示できます。


棒グラフではなく、点グラフや折れ線グラフで表示したいこともありますね。

点グラフで表示してみます。

> myplot2 <- plot(iris.mean, ylim=c(0, 9))



x軸がカテゴリーではなく数値になってしまっていますが、ここは気にせずに進めます。

さきほどと同じコマンドを入れてみます。

> arrows(myplot2, iris.mean + iris.sd, myplot2, iris.mean - iris.sd,angle=90, code=3)


 arrows(myplot2, iris.mean + iris.sd, myplot2, iris.mean - iris.sd,  でエラー:


   一番目の引数が不正です


なんと、エラーが表示されてしまいました。

どうやら、x軸との対応が問題のようです。


x軸が数値表示になってしまったので、単純に数値としてカテゴリーを割り当てます


> arrows(c(1:3), iris.mean + iris.sd, c(1:3), iris.mean - iris.sd,angle=90, code=3)



それらしくなりました。


さて、いよいよ誤差線を正あるいは負の方向のみ表示したいと思います(この情報が見つからず苦労しました)。


正の場合はcodeを1に指定します。そして、負の部分に該当するところは何も引かなくてよいわけです。

> arrows(c(1:3), iris.mean + iris.sd, c(1:3), iris.mean, angle=90, code=1)



負の場合はcodeを2に指定し、正の方向には何も加えません。

> arrows(c(1:3), iris.mean, c(1:3), iris.mean - iris.sd,angle=90, code=2)



解決できました!もちろん、棒グラフでも同様にして正のみを表示できます。

サイト内検索

お問い合わせ先

冨山 毅 Takeshi Tomiyama 〒739-8528 東広島市鏡山1-4-4 広島大学 統合生命科学研究科 082-424-7941 (直通)