MENU

R で ggplot を使ってヒストグラムと箱ひげ図を一つのグラフに書く方法

Rでヒストグラムと箱ひげ図をggplot2 を使って重ねて描く方法の紹介。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

Rでヒストグラムをggplot2 を使って描く方法

Rでヒストグラムをggplot2を使って描く方法を紹介する。

まずggplot2 パッケージをインストールして、呼び出しておく。

install.packages("ggplot2")
library(ggplot2)

次にヒストグラムを描くデータを準備する。

今回は pROC パッケージの aSAH データセットを使用する。

aSAH データセットの中の age のヒストグラムを描くことにする。

pROC パッケージをインストールして、呼び出す。

install.packages("pROC")
library(pROC)

通常のヒストグラムはこんな感じになる。

hist(aSAH$age)

ggplot2で描くとこんなかっこいい感じに描ける。

ggplot(aSAH, aes(x=age)) + geom_histograpm()

Rで箱ひげ図をggplot2 を使って描く方法

Rで箱ひげ図を ggplot2 を使って描く方法を紹介する。

通常の箱ひげ図は、こんな感じになる。

boxplot(aSAH$age)

ggplot2 を使って描くとこういうふうになる。

ggplot(aSAH, aes(x=1, y=age)) + geom_boxplot()

これを横にすることができる。

ggplot(aSAH, aes(x=1, y=age)) + geom_boxplot() + coord_flip()

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

Rでヒストグラムと箱ひげ図を ggplot2 で重ねて描く方法

上記のヒストグラムにHist1という名前を付けて、箱ひげ図には Box1 という名前を付けて、上下に並べて描くスクリプトを示す。

Hist1 <- ggplot(aSAH, aes(x=age))+
geom_histogram()
Box1 <- ggplot(aSAH, aes(x=1, y=age))+
geom_boxplot()+
coord_flip()
grid.arrange(Hist1, Box1, ncol=1, nrow=2)

grid.arrange() というのが並べる関数で、ncol=が列のグラフ枠の数、nrow=が行のグラフ枠の数である。

すると以下のような図が描ける。

ここからもう少しきれいにしていく。

スクリプト内に注釈を入れて、どの行が何をしているのかわかるようにしておく。

x <- aSAH$age
Mean <- mean(x)
Lim <- c(min(x)-sd(x)/2, max(x)+sd(x)/2) #X軸の最小最大の設定
Hist2 <- ggplot(aSAH, aes(x=age))+
geom_histogram(fill = "darkgray")+ #ヒストグラムを薄いグレーで塗る
geom_vline(xintercept = Mean, color="black")+ #平均値の位置に縦の線を黒で描く
coord_cartesian(xlim = Lim) #X軸の設定をここで反映
Box2 <- ggplot(aSAH, aes(x=1, y=age))+
geom_boxplot()+
coord_flip(ylim = Lim)+ #グラフを横にしているので横軸のY軸の設定
theme(axis.text.y = element_text(color="white"))+ #横にした後の縦方向の軸の文字を白にして非表示に
labs(x="") #縦方向の軸のラベルを非表示に
grid.arrange(Hist2, Box2, ncol=1, nrow=2, heights=c(4,1)) #heights で下の部分の高さを1/4に

実行するとこんなグラフになる。

上下を入れ替えるとこんなふうになる。

grid.arrange(Box2, Hist2, ncol=1, nrow=2, heights=c(1,4))

箱ひげ図のラベルを消すともっと見栄えがいいかもしれない。

Box2 <- ggplot(aSAH, aes(x=1, y=age))+
geom_boxplot()+
coord_flip(ylim = Lim)+
theme(axis.text.y = element_text(color="white"))+
labs(x="", y="") # y="" を追加
grid.arrange(Box2, Hist2, ncol=1, nrow=2, heights=c(1,4))

箱ひげ図に theme_minimal() を適用するとシンプルでみやすくなる。

Box2 <- ggplot(aSAH, aes(x=1, y=age))+
geom_boxplot()+
coord_flip(ylim = Lim)+
theme_minimal()+ #この行を追加
theme(axis.text.y = element_text(color="white"))+
labs(x="", y="")
grid.arrange(Box2, Hist2, ncol=1, nrow=2, heights=c(1,4))

まとめ

Rでヒストグラムと箱ひげ図を重ねる方法を、ggplot2を使って紹介した。

何らか役に立てば幸い。

参考サイト

RPubs – ggplot2でヒストグラムと箱ひげ図を同時に描く&グラフを一括出力する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次