ヒストグラムは hist 関数を用いる。関数に数値のベクトルを与えると、ヒストグラムが描かれる。ヒストグラムの幅は、デフォルトでは自動的に設定される(正確には、スタージェスの公式によって計算されている。スタージェスの公式の詳細はネット等を参照のこと)。
例では、rnorm の値を使う。 rnorm の r は random、norm は nomal(正規分布)を意味する。 nrorm(1000)とすると、正規分布で1000件のデータを無作為に作り出していることになる。
x <- rnorm(1000) # x にrnorm のデータを入れる
hist(x) #xのヒストグラムを描く
色の変更
色を変更する際は、引数 col を利用する(collar)。
hist(x, col = "orange") #グラフの色をオレンジに指定
色は他にも black, red, green, blue, cyan, magenta, yellow, gray などが利用できる。また、RGBで指定することもできる。
hist(x, col = "#0068b7") #グラフの色を #0068b7 に指定
その他の色の使い方については、自分で調べること。なお、本ページの作成する際は、以下を参考にした。
統計グラフの色
https://oku.edu.mie-u.ac.jp/~okumura/stat/colors.html
biostatistics 量的データの分布の視覚化ヒストグラムhttps://stats.biopapyrus.jp/r/graph/hist.html
ラベルの変更
タイトルは、引数 main を利用する。例ではrnormというタイトルを付けている。x軸とy軸のラベルは、引数 xlab と ylab を利用する。例では x軸 y軸 とそれぞれ設定している。ラベルは ” ” で囲む必要がある。
hist(x, col = "blue", main="rnorm") #タイトルをrnormに指定
par(family="Osaka") #日本語フォントの設定
hist(x, col = "blue", xlab="x軸", ylab="y軸", main="rnorm(1000)のヒストグラム") #タイトルとラベルを指定
ヒストグラムの重ね合わせ
複数のヒストグラムを重ねることもできる。引数 add = TRUE で指定をする。
x <- rnorm(1000, -0.5, 1) # n=1000, mean=-0.5 sd=1 を意味する
y <- rnorm(1000, 0.5, 1) # n=1000, mean=0.5 sd=1 を意味する
hist(x, col = "blue")
hist(y, col = "red", add = TRUE) # add = TRUE で重ね合わせている
色が重なる場合は、透明化することで重なりを表現できる。透明度は、RGBの記載の後に透明度の値を追記する。例えば透明度30の場合は以下のようになる。3つのヒストグラムが表示されているように見えるが、実際は2つである。
#e4007f
#e4007f30
x <- rnorm(1000, -0.5, 1) # n=1000, mean=-0.5 sd=1 を意味する
y <- rnorm(1000, 0.5, 1) # n=1000, mean=0.5 sd=1 を意味する
hist(x, col = "#e4007f30") # RGB #e4007f の透明度30
hist(y, col = "#00a0e930", add = TRUE) # RGB #00a0e9 の透明度30
軸の表記の変更
x軸の範囲を指定する場合は、 引数 xlim を用いる。例では、-4 から 4までの範囲を指定している。
x68k <- rnorm(68000) #68000をx68kに入れる
hist(x68k, col = "blue", xlab="x軸", ylab="y軸", main="rnorm(68000)のヒストグラム", xlim=c(-4,4))
x軸の区切り方を指定する場合は、引数 xaxp を用いる。xaxp(a,b,c)は、aからbをc個に分けることを意味する。例では、-3から3までを6分割している。様々な数字に置き換えて試すこと。
x68k <- rnorm(68000) #68000をx68kに入れる
hist(x68k, col = "blue", xlab="x軸", ylab="y軸", main="rnorm(68000)のヒストグラム", xlim=c(-4,4),xaxp=c(-3,3,6))
階級幅の設定
階級幅を設定する場合は、引数 breakes を用いる。breakes に幅を直接指定したり、分割する値を指定できる。
先ほどの例で 引数 breaks の値を 1000にすると以下のようになる。値を変更して試して見ること。
x68k <- rnorm(68000) #68000をx68kに入れる
hist(x68k, breaks = 1000, xlab="x軸", ylab="y軸", main="階級幅1000")
実習のヒント
breaks=seq(x, y, z) によって、x軸の幅のxからyをzずつ区切ることができる。
y軸の範囲の指定は、ylim=c(x, y) によってxからyまでと指定することができる。以下の例では、”data”に格納されている体重データを使ってヒストグラムを作成しているものと仮定している。
#breakesを10に設定した場合の例
#breakesでヒストグラムの幅を指定する
hist(data$体重データ, breaks = 10)
#breaksを5に設定した場合の例
#breaks = seq(x,y,z)の形式でヒストグラムの幅を指定
#xは40kgから yは120kg, zは5kgの幅を意味する
hist(data$体重データ, breaks = seq(40,120,5))