棒グラフ

棒グラフはコマンド"barplot"にて作成する。"barplot(height)"のように用い、この"height"に描画したいデータを入力する。ベクトルまたは行列形式のデータを読み込むことができる。ベクトルを与えた場合は、各要素の値が棒の高さ (長さ) として描画される。行列を与えた場合は、オプションにより、積み上げ棒グラフかグループごと (列ごと) に要素がまとめられた棒グラフが描かれる。

まず、以下のコマンドにてベクトル型および行列型のデータを準備する。"dat_v"がベクトル、"dat_m"が2行5列の行列である。

1|$dat_v=c(10,20,40,80,160)
2|$dat_m=matrix(c(5,16,7,8,9,4,11,2,13,1),2,5)

最も簡単に棒グラフを描くには以下のようにコマンドを打つ。行列型のデータに対し、"beside=T"を指定すると各列ごとのグループにてまとめられた棒グラフが描ける。一方で、"beside=T"を指定しない場合は積み上げ型の棒グラフになる。

1|$barplot(dat_v)
2|$barplot(dat_m)
3|$barplot(dat_m,beside=T)

結果はそれぞれ以下のようになる。

ベクトルの棒グラフ 積み上げの棒グラフ 行列の棒グラフ

水平グラフを描くためには以下のように"horiz"オプションを加える。

1|$barplot(dat_v,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"にて項目名 (X軸) のフォントサイズを、"cex.axis"にて軸目盛 (Y軸) のフォントサイズを指定する。2番目のコマンド"box()"はグラフに枠線を加えるコマンドである。GnuplotにおけるデフォルトのY軸目盛 (数値) は、Y軸と平行に表示されているが、"las"を指定することで90°回転させ、X軸と平行に表示させることができる。

1|$barplot(dat_v, 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)
2|$box("plot",lty=1)

結果は以下のようになる。

成型済み棒グラフ

以上の項目"a, b, c, d, e"の標準偏差がそれぞれ"5, 5, 10, 20, 20"であった場合に上の棒グラフにその情報を追加する。まず、各項目の標準偏差を格納した変数"sd_v"を作成する。

1|$sd_v=c(5, 5, 10, 20, 20)

以上の標準偏差をグラフに反映させるには以下のようにする。まず、上の棒グラフを描画するためのコマンドを何か適当な変数、以下では"barplot"に格納する。次に、コマンド"arrows"にてエラーバーを追加する。以下の"dat_v+sd_v"および"dat_v-sd_v"が"mean±S.D."を意味する。

1|$barplot=barplot(dat_v, 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)
2|$arrows(barplot, dat_v-sd_v, barplot, dat_v+sd_v, code=3, lwd=1, angle=90, length=0.1)

結果は以下のようになる。

S.D.追加

その他のオプションには以下のようなものがある。

OptionDescriptionUsage example
height読み込むデータの指定 (必須)height=dat_v
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
horizTか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="サブタイトル"
xlabX軸のラベルの指定xlab="Entry"
ylabY軸のラベルの指定ylab="Value"
xlimX軸の表示範囲の指定。ベクトルで指定ylim=c(0, 10)
ylimY軸の表示範囲の指定。ベクトルで指定ylim=c(0, 200)
log"x"または"y"または"xy"を指定することで、指定した軸を対数軸にて表示するlog="y"
axis.ltyX軸の表示スタイルを指定axis.lty=1
las軸目盛および各項目の表示スタイルを指定。"0", "1", "2", "3"の数値で指定。"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

※ デフォルトでは全軸の項目ラベル (目盛) は各軸に対して平行。"las=1"を指定すると、各項目 (目盛) が全て水平に位置する。

このエントリーをはてなブックマークに追加

Site search

ページのトップへ戻る