R を使った棒グラフの作り方: エラーバーを追加する方法も
UB3/informatics/r/r_barplot
このページの最終更新日: 2024/04/09- 基本: barplot 関数の使い方
- barplot 棒グラフにエラーバーを追加する
広告
基本: barplot 関数の使い方
組み込みデータセット chickwts を使ってみよう。これはさまざまな餌を与えられたニワトリの体重である。以下のような形のデータである。
![](../../images/homemade_informatics/chickwt.png)
barplot 関数はベクターでインプットするため、まずはここからデータを取り出す必要がある。長くなるので、スクリプトだけ以下にまとめておく。詳細は データフレームの取り扱い などを参照のこと。
棒グラフの作成に必要な、平均値と SD を horsebean と linseed のグループのみベクターとして保存する。
horsebean_wt = wt[1:10]
linseed_wt = wt[11:22]
means_wt = c(mean(horsebean_wt), mean(linseed_wt))
errors_wt = c(sd(horsebean_wt), sd(linseed_wt))
これで準備ができたので、means_wt を棒グラフにして、errors_wt をエラーバーにするように barplot 関数を使う。barplot の必須パラメーターは boxplot(height) だけであり、height にはベクターが入る (2)。
![R 棒グラフ](../../images/homemade_informatics/barplot_1.png)
これに以下のようなオプションを加えていくことができる。文献 2 にはさらに多くの例が載っている。
xlim, ylim |
x 軸および y 軸の範囲を設定。ylim = c(0, 300) のように使用。 |
xlab, ylab |
X 軸および Y 軸のラベルを追加。 |
names |
グループの名前を X 軸に追加。names = c("horsebeam", "linseed") のように文字列のベクターを使う。 ラベルを縦にしたいときは、las=2 という記述を追加する。 以前は names.arg と書いていたが、R ver. 4.0.4 では動かなかった。boxplot でも使える。 |
col |
バーの色を指定する。col = c("black", "white") のように文字列のベクターを使う。 |
width |
バーの太さを指定。グループごとに指定するので、例えば群が 2 つあるなら width = c(1, 1) のように指定しなければならない。width = c(1, 1) のように、太さを変えることもできる。 |
cex.lab |
cex.lab = 2 のようにして、X および Y 軸ラベルのフォントサイズを変更。 |
cex.axis |
cex.axis = 2 のようにして、X および Y 軸目盛のフォントサイズを変更。names でグループを指定したときには、グループ名は軸ラベルでなく目盛なので、これで大きさを調整する。 |
box() |
barplot のオプションではなく、独自の関数。棒グラフを四角で囲みたいときは、以下のように次の行に記載する。 barplot (height) |
![](https://www16.a8.net/0.gif?a8mat=3T23RJ+4ASRLU+3GWO+6X21T)
barplot 棒グラフにエラーバーを追加する
あまり直感的ではないが、R barplot にエラーバーを追加するには、以下のような手順をとる。
- barplot を変数に保存する。
- arrows 関数で、その変数およびエラーバーの数値を指定する。
実際にやってみよう。エラーバーが収まりらないので、ylim で指定して Y 軸の値を少し大きくしている。
arrows(graph, means_wt+errors_wt, graph, means_wt-errors_wt, code = 3, angle = 90, lwd = 1, length = 0.1)
![](../../images/homemade_informatics/barplot_2.png)
arrows の理屈がいまいちよくわからないので、あとでさらに整理したいが、現時点で言えるのは以下である。
- グラフを格納した変数, 平均の変数 + SD の変数で、正方向のエラーバーを書く。
- + を - にしてこれを繰り返すことで、負方向のエラーバーを書く。
- lwd は line width で、線の太さ。angle は角度。
このページ も役に立つ。有意差マークをつける方法なども載っている。
広告
References
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。