Rによる棒グラフの描画
棒グラフはコマンド barplot() にて作成する.barplot(data) のように data の部分に描画したいデータを指定する.ベクトルまたは行列形式のデータを読み込むことができる.ベクトルを与えた場合は,各要素の値が棒の高さ (長さ) として描画される.行列を与えた場合は,オプションにより,積み上げ棒グラフかグループごと (列ごと) に要素がまとめられた棒グラフが描かれる.
最初に,以下のコマンドにてベクトル型および行列型のデータを準備する.mv がベクトル,dm が2行5列の行列である.
$ mv=c(10,20,40,80,160) $ dm=matrix(c(5,16,7,8,9,4,11,2,13,1),2,5)
簡単な描画
最も簡単に棒グラフを描くには以下のようにコマンドを打つ.行列型のデータに対し,beside=T を指定すると各列ごとのグループにてまとめられた棒グラフが描ける.一方で,beside=T を指定しない場合は積み上げ型の棒グラフになる.
$ barplot(mv) $ barplot(dm) $ barplot(dm,beside=T)
結果はそれぞれ以下のようになる.
水平グラフを描くためには以下のように horiz オプションを加える.
barplot(mv,horiz=T)
結果は以下のようになる.
図の装飾
以下のようなオプションを付けるときれいなグラフを描くことができる.オプション names.arg では各要素の名前を指定できる.col では,各要素の背景色を指定する.main ではグラフのタイトルを,xlab ではX軸のラベルを,ylab ではY軸のラベルを指定する.ylim はY軸の表示範囲を決めるためのオプション.axis.lty ではX軸の表示スタイルを指定できる.las では軸目盛および各項目の表示スタイルを指定できる.font.main,font.lab,font ではそれぞれタイトル,軸ラベル,軸項目のフォントを指定する.cex.main,cex.lab,cex.names,cex.axis ではそれぞれ,タイトル,軸ラベル,項目名 (X軸),軸目盛 (Y軸) のフォントサイズを指定する.2番目のコマンド box() はグラフに枠線を加えるコマンド.R におけるデフォルトのY軸目盛 (数値) は,Y軸と平行に表示されているが,lasを指定することで90°回転させ,X軸と平行に表示させることができる.
$ barplot(mv, names.arg=c("a","b","c","d","e"), col=c("red", "blue", "yellow", "green", "purple"), main="Barplot", xlab="Entry", ylab="Value", ylim=c(0,200), axis.lty=1, las=1, font.main=15, font.lab=15, font=15, cex.main=3, cex.lab=1.2, cex.names=1.2, cex.axis=1.2) $ box(lty=1)
結果は以下のようになる.
標準偏差の追加
以上の項目 a,b,c,d,e の標準偏差がそれぞれ 5,5,10,20,20 であった場合に上の棒グラフにその情報を追加する.最初に,各項目の標準偏差を格納した変数 sdv を作成する.
sdv=c(5, 5, 10, 20, 20)
以上の標準偏差をグラフに反映させるには以下のようにする.まず,上の棒グラフを描画するためのコマンドを何か適当な変数,以下では barplot に格納する.次に,コマンド arrows にてエラーバーを追加する.以下の mv+sdv および mv-sdv が mean ± SD を意味する.
$ barplot=barplot(mv, names.arg=c("a","b","c","d","e"), col=c("red", "blue", "yellow", "green", "purple"), main="Barplot", xlab="Entry", ylab="Value", ylim=c(0,200), axis.lty=1, las=1, font.main=15, font.lab=15, font=15, cex.main=3, cex.lab=1.2, cex.names=1.2, cex.axis=1.2) $ arrows(barplot, mv-sdv, barplot, mv+sdv, code=3, lwd=1, angle=90, length=0.1) $ box(lty=1)
結果は以下のようになる.
オプション一覧
その他のオプションには以下のようなものがある.
オプション | 詳細 | 使用例 |
---|---|---|
height | 読み込むデータの指定 (必須) | height=mv |
width | 各項目の棒の太さの指定 | width=c(1, 2, 3, 5, 8) |
space | 棒と棒との間隔の指定.行列形式のデータを"beside=T"で読み込んだ場合はベクトルの最初の数値でグループ内の棒の間隔,次の数値でグループ間の棒の間隔の指定. | space=c(2, 5) |
names.arg | 各項目の名前の指定 | names.arg=c("a", "b", "c") |
legend.text | 凡例の指定 | legend.text=c("foo", "bar, "baz") |
beside | 行列形式のデータを読み込んだ際,"T"の場合は並列棒グラフ,"F"の場合は積み上げ棒グラフを描画 | beside=T |
horiz | TかFにて垂直棒グラフか水平グラフかの指定 | horiz=T |
density | 棒グラフの斜線の濃さの指定.数値またはベクトルにて指定 | density=20 |
angle | "density"で指定した斜線の角度の指定.数値またはベクトルにて指定 | angle=c(30, 45, 60) |
col | 棒の色の指定 | col=c("red", "blue", "yellow") |
border | 棒の枠線の有無の指定 | border=F |
main | グラフのタイトルの指定 | main="タイトル" |
sub | グラフのサブタイトルの指定 | sub="サブタイトル" |
xlab | X軸のラベルの指定 | xlab="Entry" |
ylab | Y軸のラベルの指定 | ylab="Value" |
xlim | X軸の表示範囲の指定.ベクトルで指定 | ylim=c(0, 10) |
ylim | Y軸の表示範囲の指定.ベクトルで指定 | ylim=c(0, 200) |
log | "x"または"y"または"xy"を指定することで,指定した軸を対数軸にて表示する | log="y" |
axis.lty | X軸の表示スタイルを指定 | axis.lty=1 |
las | 軸目盛および各項目の表示スタイルを指定.0,1,2,3の数値で指定.デフォルトでは全軸の項目ラベル (目盛) は各軸に対して平行.las=1 を指定すると,各項目 (目盛) が全て水平に位置し Excel と同じになる. | las=1 |
font.main | グラフのタイトルのフォントの指定 | font.main=15 |
font.sub | サブタイトルのフォントの指定 | font.sub=2 |
font.lab | 軸ラベルのフォントの指定 | font.lab=15 |
font | 軸項目および目盛のフォントの指定 | font=15 |
cex.main | グラフのタイトルのフォントサイズの指定 | cex.main=4 |
cex.sub | サブタイトルのフォントサイズの指定 | cex.sub=1 |
cex.lab | 軸ラベルのフォントサイズの指定 | cex.lab=1.6 |
cex.names | 軸項目のフォントサイズの指定 | cex.names=1.2 |
cex.axis | 目盛のフォントサイズの指定 | cex.axis=1.2 |