==《図と具体例》==

「R」による棒グラフの作り方

【1. 棒グラフの基本】
d1<-c(3,5,7,6,4)
barplot(d1)
⇒ 「コピペで実験」が体に覚えさせる近道です.以下の例も同様.
Rで棒グラフを描くには,関数barplot()を使う.
barplot() の引数には,各々のデータの高さ(縦棒グラフの場合)を表す数字の組(ベクトル)を入れる
(復習)
ベクトル(数字の組)を作るには関数c()を使う.c は 値をCombine する(組み合わせる)の意味
変数に値を代入するには,d1=c(…)の形も使うが,Rのマニュアルでは山かっこ(<)とハイフン(-)の組が多いので,これに慣れるとよい
【2. 横棒グラフにするには】
d1<-c(3,5,7,6,4)
barplot(d1,horiz=T)

Rの関数barplot()は,デフォルト(初期設定,パラメータが省略されたとき)の場合,縦棒グラフになる.
横棒グラフにするには,パラメータとして,horiz=TRUE を指定する.
(復習)
horizは,水平置きhorizontallyか,そうでないかを指定するパラメータ.ただし,horizで使うようになっており.horizonとかhorizontallyなどと「丁寧に」書いても無効になる
真偽は,TRUEという記号定数で書く.
使える使えない
TRUE, T, 1true, True, 'TRUE', "TRUE", t
FALSE, F, 0false, False, "FALSE", 'FALSE', f
※真偽を数値で書くときは,C言語などと同様で,整数の0, 小数の0.0 が偽で,それ以外(例えば、1, 2, −0.1, 100, など)はすべて真とみなされる.
【3. 複数系列棒グラフを表示するには】
d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1<-rbind(d1,d2)
barpolt(m1))

複数の行からなる行列をRの関数barplot()に引数として渡すと,複数系列の「縦棒グラフ」が「積み上げ」形式で表示される.
(復習)
2つのベクトルD1=c(3,5,7,6,4), D2=C(1,2,4,3,1)をそれぞれ行ベクトルとして行列を作るには,m1<-rbind(d1,d2)とする.m2<-cbind(d1,d2)とすれば,それぞれを列ベクトルとする行列ができる.
 m1
   [,1] [,2] [,3] [,4] [,5]
d1    3    5    7    6    4
d2    1    2    4    3    1
m2
     d1 d2
[1,]  3  1
[2,]  5  2
[3,]  7  4
[4,]  6  3
[5,]  4  1
【4. 複数系列棒グラフを並列表示するには】
d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1<-rbind(d1,d2)
barplot(m1,beside=T)

並列形式の棒グラフにするには,パラメータとして,beside=TRUE を指定する.

【5. 棒グラフの下に名前を表示するには】
d1<-c(3,5,7,6,4)
name1<-c("A","B","C","D","E")
barplot(d1,names.arg=name1)

棒グラフの下に名前を表示するには,パラメータとして,names.arg= の形で,名前の入ったベクトルを指定する.なお,Rのコンソール画面では,デフォルトで表示フォントが英数字用のcourierになっているため,日本語漢字かなを入力すると,表示位置がずれることがある.これを直すには,Rのコンソール画面で「編集」「GUIプリファレンス...」で,フォントをMS Gothicなどに変更しておくとよい.
d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1<-rbind(d1,d2)
name2<-c("尊氏","信長","秀吉",
  "家康","信玄")
barplot(m1,beside=T,
  names.arg=name2,horiz=T)

複数系列の横棒グラフに名前を入れると,名前は左に表示される
【6. 棒グラフに色を付けるには】
d1<-c(3,5,7,6,4)
c1<-c("red","blue","green",
  "yellow","black")
barplot(d1,col=c1)

棒グラフに色を付けるには,パラメータとして,col= の形で,色順をベクトルにしたものを指定する.colはcolorsから作った変数名でしょう.
なお,系列が1つの棒グラフでは,初期設定で灰色(gray)の棒グラフになり,複数系列の棒グラフでは,灰色の濃淡で各系列が色分けされる.
"red", "blue"のように名前で指定できる色の一覧は,Rのコンソールから colors()と入力すれば表示される(300色以上ある)が,覚えやすいものは原色でそのまま画面に使うとギラギラと目に厳しい色構成になりやすい.これを防ぐための単純な工夫としては,(A) "#RRGGBB"の16進色コードで,33,66,99,ccなどの中間色を組み合わせるとよい.(B) 原色でも,棒に斜線パターンを入れるとギラギラしない.

【7. 棒グラフの色を#RRGGBBで指定するには】
c2<-c("#cc0000","#0000cc",
  "#cccc00","#00cc00","#999999")
d1<-c(3,5,7,6,4)
barplot(d1,col=c2)

【8. 棒グラフを斜線パターンで塗りこむには】
d1<-c(3,5,7,6,4)
c1<-c("red","blue","green",
  "yellow","black")
barplot(d1,col=c1,angle=45,
  density=20)

斜線パターンで塗りこむには,angle= によって,360分法(度数法)で反時計回りに斜線の角度を指定する.例えば,angle=45 とすると,右上がり45度の斜線になる.
density= によって,1インチ(=2.54cm)当たりの線の本数を指定する.画面上のことで,インチにも慣れていないことが多いので,2,3試してみて,見やすい数字にしたらよい.
斜線パターンを何種類か使うには,angle=c(45,-45,0,30,-30)のように,斜線の角度をベクトルで指定すればよい.

【9. 棒グラフをタイトル,サブタイトルを付けるには】
d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1<-rbind(d1,d2)
barplot(m1,beside=T,
  main="気温と降水量",
  sub="2023年")

main= で文字列を指定すれば,タイトルが表示される.(縦棒グラフでは上に)
sub= で文字列を指定すれば,サブタイトルが表示される.(縦棒グラフでは下に)
【10. 縦軸横軸にラベルを付けるには】
d1<-c(3,5,7,6,4)
barplot(d1,xlab="月",
  ylab="気温")

xlab= で文字列を指定すれば,X軸のラベルが表示される
ylab= で文字列を指定すれば,Y軸のラベルが表示される
xlab, ylabの指定は,横棒グラフになっても,データに従って行かない.(Xはそのまま横,Yもそのまま縦)
【11. 縦軸横軸の表示範囲を指定するには】
d3<-c(10,11,12,15,13)
barplot(d3, xlim=c(0,5),
  ylim=c(5,20))

ylim= によって,y軸の目盛りの範囲が指定される(棒グラフの範囲は変わらない)
ylim=c(5, 20)のように,下端と上端を2数からなるベクトルで表す.
xlim= によって,x軸の目盛りの範囲が指定されることになっているが,棒の横幅widthは,初期設定で1になっているので,このグラフで,x=c(0,5)とすれば,全部見えるだけで何も変わらない.
【12. 凡例を表示するには】

d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1=rbind(d1,d2)
barplot(m1,beside=T,main="気温と降水量",
  legend.text=c("気温","降水量"),
  args.legend = list(x = "topright"))
複数系列の棒グラフを描いているときは,各系列の名前をlegend.text=c("気温","降水量")のように指定することにより,凡例を付けることができる.凡例はグラフと重ならないように,args.legend = list(x = "topright")の形で, "topright", "bottomleft", "bottomright"などを使うことができ, args.legend = list(x =15,y=7)の形で空いている場所を座標で指定することもできる.
【13. 棒の太さ,すき間の幅を指定するには】
d1<-c(3,5,7,6,4)
d2<-c(1,2,4,3,1)
m1=rbind(d1,d2)
name1<-c("A","B","C","D","E")
barplot(m1,beside=T,
  space=c(0.3,0.4),
  width=c(2,1),
  names.arg=name1)

space によって,棒グラフのすき間の幅を指定する.何も指定しないとき(=初期設定で)space=0.2 となっている.このグラフのように,複数系列の棒グラフが並列形式になっているとき,Aの中での2系列の間が0.3,AB間が0.4になる.
width によって,棒の幅を指定する.何も指定しないとき(=初期設定で)width=1 となっている.このグラフのように,複数系列の棒グラフが並列形式になっているとき,第1の系列の棒がwidth=2,第2の系列の棒がwidth=1になる.
width=0 とすれば,ヒストグラムに必要な「隙間のない棒グラフ」が描ける.
...メニューに戻る