Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~

3,989 views

Published on

2017/07/30 kazutanRへのエントリー(抜粋資料)です。ggplot2でキレイなグラフを書きましょう。わかりやすさ、学びやすさ優先。「できる」から「わかる」の方向で、皆様の学びに貢献します。うなどん。

Published in: Education
  • Be the first to comment

魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~

  1. 1. The kazutan.R: special held in Tokyo Hands on Session2: ggplot2 魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! 〜 ggplot2 導入編 〜 Presenter:うなどん Twitter: @MrUnadon 2017年7月30日
  2. 2. 今日の目標①
  3. 3. 今日の参照コード ・ハンズオンのコードはスライドに出します。 ・お⼿を拝借、ともに写経をしましょう。 ・今⽇の内容 + α の情報 → “MrUnadon”で検索
  4. 4. ハンズオン プログラム ・ggplot2概要: 「重ね書き」の絵 ・ステップ①: 基本グラフ編 ― 散布図(ヒストグラム) ・ステップ②: グラフ重ね書き編 ― 回帰直線(密度曲線) ・ステップ③: 設定重ね書き編 ― グラフ分割・⾊の変更・テーマ Lecture Hands On Hands On Hands On
  5. 5. ハンズオン プログラム ・ggplot2概要: 「重ね書き」の絵Lecture
  6. 6. ・どんなグラフも、基本の考え⽅は同じ ① キャンバスを⽤意 → ⽩紙を⽤意、x軸とy軸の設定 ② グラフの絵を”+”で重ねる(+重ね書き) →棒グラフ、ヒストグラム、散布図、箱ひげ図、折れ線グラフ…etc ③ その他設定(全体・細部)を”+”で重ね書き → ⾊の変更、軸の設定、グラフテーマの設定、タイトル、 グラフの分割、フォントの変更 etc… ggplot2概要Lecture
  7. 7. ① キャンバスの設定 ② グラフの絵をのせる+重ね書き ③ 体裁(全体・細部)を+重ね書き キャンバス用意 (x軸・y軸等環境) 散布図 回帰線 体裁を上書き (色選択・軸フォントetc) X Axis “Sepal Length” ggplot() geom_point() geom_smooth() theme() ggplot2概要Lecture
  8. 8. irisってなんだっけ? ・データ(data.frame型): アヤメの花弁・がく⽚ numeric型 Sepal: がく片 numeric型 Petal: 花びら factor型 品種 Setosa ヒオウギアヤメ Versicolor ハナショウブ Virginica カキツバタ Lecture
  9. 9. library(ggplot2) #キャンバスの⽤意: 使うデータとx,y軸指定 ggplot(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width)) <実⾏結果> X Axis “Sepal Length” ggplot() キャンバス設定 ggplot2概要Lecture
  10. 10. library(ggplot2) #キャンバスの⽤意: 使うデータとx,y軸指定 ggplot(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width))+ geom_point() #散布図 <実⾏結果> X Axis “Sepal Length” geom_point() 散布図 ggplot2概要Lecture
  11. 11. ・散布図側に、x軸とy軸を指定する場合 ggplot()+ geom_point(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width)) →この散布図においてのみ、設定が適⽤ ggplot2概要Lecture ・キャンバスにx軸とy軸を指定する場合 ggplot(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width))+ geom_point() →以降、重ねるグラフ全てに、この設定が適⽤ ポイント
  12. 12. library(ggplot2) #キャンバスの⽤意: 使うデータとx,y軸指定 ggplot(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width))+ geom_point()+ geom_smooth() #回帰線 <実⾏結果> X Axis “Sepal Length” geom_smooth() 回帰線の重ね書き ggplot2概要Lecture
  13. 13. library(ggplot2) #キャンバスの⽤意: 使うデータとx,y軸指定 ggplot(data=iris, mapping = aes(x=Petal.Length,y=Petal.Width))+ geom_point()+ geom_smooth()+ theme_bw() #bwというテーマセット適⽤ <実⾏結果> theme() 体裁を上書き X Axis “Sepal Length” ggplot2概要Lecture
  14. 14. ・ggplot2は「グラフ」と「設定」を ”+”で重ねて描くもの ①ggplot()でキャンバス設定 ②多種のグラフ種類(geom_point.. ..) ③多様な体裁の調整(⾊、形、フォントetc…) →どんなグラフも、 設定を重ねれば描き上げられる!! ggplot2概要Lecture
  15. 15. ハンズオン プログラム ・ステップ①: 基本グラフ編 ― 散布図(ヒストグラム) Hands On
  16. 16. ステップ①: 基本グラフ編Hands On ・散布図 ⽅法: ggplot() + geom_point() library(ggplot2) #ggplot()でキャンバス用意 # + geom_point()で散布図 ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point() 実⾏結果
  17. 17. ステップ①: 基本グラフ編Hands On ・散布図 ⽅法: ggplot() + geom_point() Setosa, Versicolor, Virginica, →全部まとめて 描いている →⾊分けたい
  18. 18. ステップ①: 基本グラフ編Hands On ・散布図 + ⾊の塗り分け ⽅法: ggplot(aes(colour=列名)) + geom_point() #aes(colour=“Species”)で色分け ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) + geom_point() 実⾏結果
  19. 19. ステップ①: 基本グラフ編Hands On ・散布図 + 点のサイズ変更① ⽅法: ggplot(aes(size=列名)) + geom_point() #aes(size=“Petal.Width”)でサイズ ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species, size=Petal.Width)) + geom_point() 実⾏結果
  20. 20. ステップ①: 基本グラフ編Hands On ・散布図 + 点のサイズ変更② ⽅法: ggplot() + geom_point(size=5) #aes()の外でサイズを設定 ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) + geom_point(size=5) 実⾏結果
  21. 21. ・aes()の中でのサイズ指定と、外でのサイズ指定 <aes()の中> e.g. geom_point(aes(size=Petal.Length)) → 「この列のデータを使って、サイズを変える」 <aes()の外> e.g. geom_point(aes(), size=5) → 「⾃分で値を指定する」 ポイント Hands On ステップ①: 基本グラフ編
  22. 22. ハンズオン プログラム ・ステップ②: グラフ重ね書き編 ― 回帰直線(密度曲線) Hands On
  23. 23. ステップ②: 重ね書き編Hands On この散布図に、 回帰直線を⾜したい
  24. 24. ステップ②: 重ね書き編Hands On ・散布図 + 回帰/近似線 ⽅法: ggplot() + geom_smooth() #geom_smooth()で近似線 ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) + geom_point()+ geom_smooth(method=“lm”, fullrange=T) 実⾏結果
  25. 25. ハンズオン プログラム ・ステップ③: 設定重ね書き編 ― グラフ分割・⾊の変更・テーマHands On
  26. 26. ステップ③: 設定重ね書き編Hands On ⾚・⻘・緑で、 (Speciesで) グラフを3分割したい
  27. 27. Hands On ・散布図 + グループで分割グラフ ⽅法: ggplot() + facet_wrap(~Species) #facet_wrap: グループでグラフ分割 ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) + geom_point()+ geom_smooth(method=“lm”, fullrange=T)+ facet_wrap(~Species, scales=“free”) 実⾏結果 ステップ③: 設定重ね書き編
  28. 28. グラフテーマ 変えたい ステップ③: 設定重ね書き編
  29. 29. +theme_dark() +theme_bw() +theme_gray() +theme_light() +theme_void() +theme_minimal() +theme_classic() ステップ③: 設定重ね書き編
  30. 30. Hands On ・散布図 +グラフテーマ変更 ⽅法: ggplot() + theme_linedraw()など #facet_wrap: グループでグラフ分割 ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) +geom_point()+ geom_smooth(method=“lm”, fullrange=T)+ facet_wrap(~Species, scales=“free”)+ theme_linedraw() 実⾏結果 ステップ③: 設定重ね書き編
  31. 31. Hands On ・散布図 + ⾊を指定して変更 ⽅法: ggplot() + scale_colour_manual(values=“”) ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) +geom_point()+ geom_smooth(method=“lm”, fullrange=T)+ facet_wrap(~Species, scales=“free”)+ theme_linedraw()+ scale_colour_manual(values= c("#6959CD", "#008B45", "#BFBFBF")) 実⾏結果 ステップ③: 設定重ね書き編
  32. 32. ・Color Pickerで⾊選択
  33. 33. ・右下のAll R colors
  34. 34. ・必要な数だけ⾊を選択
  35. 35. ・⾊コードが出⼒される
  36. 36. Hands On ・散布図 + ⾊を指定して変更 ⽅法: ggplot() + scale_colour_manual(values=“”) ggplot(iris,aes(x = Sepal.Length, y = Sepal.Width, colour=Species)) + geom_point()+ geom_smooth(method=“lm”, fullrange=T)+ facet_wrap(~Species, scales=“free”)+ theme_linedraw()+ scale_colour_manual(values= c("#6959CD", "#008B45", "#BFBFBF")) 実⾏結果 ステップ③: 設定重ね書き編
  37. 37. ① キャンバスの設定 ② グラフの絵をのせる+重ね書き ③ 体裁(全体・細部)を+重ね書き キャンバス用意 (x軸・y軸等環境) 散布図 回帰線 体裁を上書き X Axis “Sepal Length” ggplot() geom_point() geom_smooth() theme_linedraw() facet_wrap() scale_colour_manual() ここまでの整理Lecture
  38. 38. Hands On ・ヒストグラム(y軸が度数) ⽅法: ggplot()+geom_histogram() ggplot(iris,aes(x=Sepal.Length, fill=Species)) + geom_histogram()+ theme_linedraw()+ facet_wrap(~Species, scales=“free”) 実⾏結果 ヒストグラムで復習
  39. 39. Hands On ・ヒストグラム+密度曲線(y軸確率密度) ⽅法: ggplot(aes(y=..density..))+geom_density() ggplot(iris,aes(x=Sepal.Length, y=..density.., fill=Species)) + geom_histogram()+ geom_density(alpha=0.3)+ #透過性の調整α theme_linedraw()+ facet_wrap(~Species, scales=“free”) 実⾏結果 ヒストグラムで復習+α
  40. 40. ⼆つのグラフを 並べてひとつの グラフにしたい ステップ③: 設定重ね書き編 + =
  41. 41. Hands On ・パッケージ{Rmisc} multiplot()関数 ggplot を使うためのoption
  42. 42. Hands On ・パッケージ{Rmisc} multiplot()関数 ggplot を使うためのoption 実⾏結果 別グラフを並べる ⽬標達成!!! library(Rmisc) multiplot ( gg_point, gg_hist, cols = 1)
  43. 43. ・ggplot2コードの辞書的まとめ ”MrUnadon” で検索 →手元においておくチートコード ・初歩から程よくggplot2を使いこなすまで ”MrUnadon” で検索 →本日の内容 + α 今日やったこと、明日忘れるから…
  44. 44. https://www.slideshare.net/daikihojo/mcmcgg ・軸やタイトルの超簡単設定の方法 ”MCMCしすぎて締め切り間近” で検索 → ggpubrとggThemeAssistの紹介 ・論文用グラフをggplot2で ”MrUnadon” で検索 ・画像を使ったggplot2 “MrUnadon”で検索 もっと手軽に、便利に、楽しく!

×