データセットはいつものmtcars
#最も基本のhist関数
hist(mtcars$mpg)
#ビン(データの範囲を区切ったときの各区間をビンと呼ぶ)の数を指定する
#しかし、その数になるとは限らない(近い数でのビン数となる)
hist(mtcars$mpg, breaks=10)
#次にgglpt2パッケージとdplyrパッケージを使う
library(ggplot2) #ggplot関数を使うためのlibrary関数によるggplot2パッケージのロード
## Warning: package 'ggplot2' was built under R version 3.3.2
library(dplyr) #パイプ演算子 %>% 利用のため を使うためのlibrary関数によるdplyrパッケージのロード
## Warning: package 'dplyr' was built under R version 3.3.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#まずはqplot関数を使ってみる。 #区間の幅はbinwidth引数(ビンの数ではなくビンの幅)で指定する。colour引数でビンの周囲に指定した色を付けることができる
#colour引数を指定しない場合も描画してみると良い
mtcars$mpg %>% qplot(binwidth=5, colour="red")
#ggplot関数では次の通り
ggplot(mtcars, aes(x=mpg)) + geom_histogram(binwidth=5, colour="white")
#ビンの周囲の色は白の方が落ちついた描画となる。
#前の図と同じ。しかし、パイプ演算子 %>% を使っている。コードにおいて何が違うが確認すること。
mtcars %>% ggplot(aes(x=mpg)) + geom_histogram(binwidth=5, colour="white")
#このグラフにタイトルを付ける
mtcars %>% ggplot(aes(x=mpg)) + geom_histogram(binwidth=5, colour="white") + labs(title="mtcars$mpg")
#タイトルが左寄りになっているので、これを中央に置く
mtcars %>% ggplot(aes(x=mpg)) + geom_histogram(binwidth=5, colour="white") + labs(title="mtcars$mpg") + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20))
#さらにタイトル、x軸、y軸表示を日本語表示にする
p <- mtcars %>% ggplot(aes(x=mpg)) + geom_histogram(binwidth=5, colour="white") + labs(title="車のマイレージ", x="マイレージ", y="度数")
p # pだけを実行することにより、その内容を描画する
#前の方法では日本語がトーフになってしまった
#次の方法だとうまくいく
#p への足し算として theme_bw(base_family="HiraKakuProN-W3") と theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20)) を追加している(つまり2つの条件を追加したことになる)
p + theme_bw(base_family="HiraKakuProN-W3") + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20))
#しかし次の通り、順番を変えるとうまく行かない。
# theme_bw(base_family="HiraKakuProN-W3")は効いている、しかし
# theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20))の位置指定が効いていない
# 順番にも意味がある、ということになる。
p + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20)) + theme_bw(base_family="HiraKakuProN-W3")
#ビンの色を黒からライトブルーに変更する
#geom_histogram関数のfill引数に色を指定することにより可能
p <- mtcars %>% ggplot(aes(x=mpg)) + geom_histogram(binwidth=5, fill="lightblue", colour="white") + labs(title="車のマイレージ", x="マイレージ", y="度数") + theme_bw(base_family="HiraKakuProN-W3") + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 20))
p # pだけを実行することにより、その内容を描画する
Macにおけるplot、ggplotでの日本語描画の方法 https://www.karada-good.net/analyticsr/r-58
タイトル、x軸、y軸などのラベル http://motw.mods.jp/R/ggplot_labs.html
これも参考になる https://notchained.hatenablog.com/entry/2016/10/15/134938
library(gridExtra) #grid.arrage関数実行に必要なパッケージのロード
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
#まずirisデータセットの内容を確認する
head(iris, 10) #Petal.Lengthは花びらの長さ、Sepal.Lengthは萼(がく)の長さ、各々 xxxxx.widthは幅
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
#mtcarsの描画で使ったコードを参考にして、花びらの長さと萼の長さの度数を棒グラフで描く
a <- iris %>% ggplot(aes(x=Petal.Length)) + geom_histogram(binwidth= 0.5, colour="white") + labs(title="あやめの花びら", x="花びらの長さ", y="度数")+ theme_bw(base_family="HiraKakuProN-W3") + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 15))
b <- iris %>% ggplot(aes(x=Sepal.Length)) + geom_histogram(binwidth= 0.5, colour="white") + labs(title="あやめの萼", x="萼の長さ", y="度数")+ theme_bw(base_family="HiraKakuProN-W3") + theme(plot.title = element_text(hjust = 0.5), text = element_text(size = 15))
#library(gridExtra)実行により、grid.arrange関数が利用可能
#grid.arrange関数は1つの描画において複数の図を描画する関数
#「散布図の書き方」で使った関数なので、その説明も参考にするとよい
grid.arrange(a, b, ncol=2)
上に描画した画像はy軸の数値が揃っていないので、単純に比較出来ない。
そこでy軸の数値を揃えた図に修正したものを、いつものようにrmdによるhtmlファイルを作成し、moodleにアップしてください。
修正方法は、aとbへの代入式へ、y軸のスケールを揃えるレイヤ指定を1つだけ増やすこと。
次のURLにその方法を記述しているので、参考にしてください。
http://rpubs.com/Indipapa/rolls_of_dice
また、rmdファイルのチャンク内では、利用する関数などの実行に必要な全てのパッケージを予めlibrary関数で指定しておくことを忘れずに。