ヒストグラムの作り方

ヒストグラムは 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))
カテゴリー: DL2