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.

Tokyo.R #66 初心者セッション3

868 views

Published on

Tokyo.R #66での発表資料です。
PPTに変換した際に見づらくなっている可能性があります。

Published in: Data & Analytics
  • Be the first to comment

Tokyo.R #66 初心者セッション3

  1. 1. Rでデータを可視化する @koriakane Tokyo.R #66
  2. 2. 自己紹介 • 宮﨑(@koriakane) • Tokyo.R運営チーム所属(会計、調整、諸々) • SIerで分析(+前段階のコンサル)をしてました • 近況:昨日最終出社日でした
  3. 3. この資料のターゲット • R初心者(初心者セッションなので!) • 「そうだ、R、やろう」と思い立ったくらい • ワテクシのように、分析をして、その結果を 報告書(pptとか)に記載する必要のある方 • 「R上で可視化がしたいんだ!」という方
  4. 4. 例えば
  5. 5. Rでの分析結果を • PPTにまとめていきます • グラフ(プロット)も貼り付けていきます
  6. 6. すると
  7. 7. と言われがち
  8. 8. たいていの場合 • 自分が分析結果を確認するためのプロットと、人( 顧客)に見せる用のプロットは、違うもんだ、と思 っておいた方が身のため • だがしかし、いちいち「えくせる」とか「ぱわー ぽいんと」で描き直すのはめんどくさい • とはいえ、分析結果報告書は「えくせる」とか「 ぱわーぽいんと」で書かざるを得ない(場合が私 は多かった)
  9. 9. Rでそれっぽく可視化して、 貼り付ければええやん!
  10. 10. Rで可視化する、といえば? • plot()←何も考えずに実施しても何かしら出る • hist()←ヒストグラムを出す • barplot()←棒グラフを出す • matplot()←折れ線グラフを出す • boxplot()←箱ひげ図を出す
  11. 11. Rで可視化する、といえば? • こんな感じ plot(iris$Species) hist(iris$Sepal.Length)
  12. 12. 簡単
  13. 13. まぁ、見栄え良くはない
  14. 14. それっぽく可視化するには • ワテクシはよくggplot2を使います • ggplot2:キャンバスを用意して、重ね書きし ていくイメージで、プロットを作成すること ができる →カスタマイズが楽 →見栄え良くそれっぽいプロットが作れる
  15. 15. ggplot2で可視化する • データの基本条件 1. データ型がdata.frame 2. 全ての列で行数が同じ 3. カテゴリ変数がある場合、全ての行に 対して、何かしらのカテゴリに属して いることがわかるデータがある • 上記3つを満たしていれば、何とかなります
  16. 16. こんな感じ • みんなだいすきiris > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 … > anyNA(iris) [1] FALSE data.frame カテゴリ変数があり、各行が何かしらのカテゴリに属している NAなし
  17. 17. いざ、実践 (まずはヒストグラム)
  18. 18. これを ggplot(data = iris, aes(x = Sepal.Length))
  19. 19. こうやって ggplot(data = iris, aes(x = Sepal.Length)) + geom_histogram()
  20. 20. こうじゃ ggplot(data = iris, aes(x = Sepal.Length)) + geom_histogram(aes(fill=Species), bins=30, alpha=0.5)
  21. 21. もういっこいっとく (まずは散布図)
  22. 22. これを ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
  23. 23. こうやって ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point()
  24. 24. こうじゃ ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point(aes(colour = Species))
  25. 25. それっぽい
  26. 26. 何をやっているか ggplot(data = iris, aes(x = Sepal.Length)) プロットに使う列名を指定する プロットに使うdata.frameを 指定する
  27. 27. 何をやっているか ggplot(data = iris, aes(x = Sepal.Length)) + geom_histogram() プロットの種類を指定する
  28. 28. 何をやっているか ggplot(data = iris, aes(x = Sepal.Length)) + geom_histogram(aes(fill=Species), bins=30, alpha=0.5) ヒストグラムを塗る色の色分けに使う列 名を指定する もろもろ調整する (bins:区切り、alpha:透過度)
  29. 29. 同様に散布図も描けます ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point(aes(colour = Species)) プロットに使う列名を指定する (散布図なので、x軸とy軸が必要) プロットに使うdata.frameを 指定する 点の色分けに使う列名を指定する
  30. 30. ちなみに、こう書いてもOK ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() こう書くと、+以降のプロット全てに 色分けが適用される
  31. 31. さっきから出てるaes()って、 何
  32. 32. aesとは • data.frameのどの列を、プロットのどの要素に 対応させるのか、をマッピングするもの • 詳しくは、偉大なるユタニさんのスライドを 参考にしましょう • https://speakerdeck.com/yutannihilation/ggplot2zai-ru-men x x軸 y y軸 colour 点や線の色 fill 塗りの色
  33. 33. どんなプロットの種類があるか ? • ヒストグラム → geom_histgram() • 散布図 → geom_point() • 棒グラフ → geom_bar() • 折れ線グラフ → geom_line() • 箱ひげ図 → geom_boxplot() • etc.
  34. 34. それっぽいものが作れました • あとは、画像ファイルにして、PPTに貼り付け ていけばOK • RStudioであれば、Export > Save as Imageで できます
  35. 35. それでもまだ言われたりする
  36. 36. その1
  37. 37. Colour Pickerを使いましょう • colour pickerアドインを使えば、色を表示しな がら必要な色を選択し、イメージにあったカ ラーセットを作成することが可能です。
  38. 38. そもそもアドインって、何 • アドイン = RStudioアドインの意です • ボタン一つで実行したり、GUI操作で処理でき たりします • 詳しくは、公式ドキュメントをチェックしま しょう • http://rstudio.github.io/rstudioaddins/
  39. 39. Colour Pickerを使いましょう • RStudioで、colourpickerパッケージをインスト ールすると、「Addins」というボタンから、 Colour Pickerアドインを使用することができ ます。
  40. 40. 選択した色を適用します colors <- c("#00C5CD", "#D02090", “#828282") ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) 色分けの指定 ※色分けしているパラメータが、 colourかfillかで変わります
  41. 41. その2
  42. 42. facet_wrap()を使いましょう ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) + facet_wrap(~Species, ncol = 3) ~:分割に使用するカテゴリ変数の指定 ncol:横に幾つ並べるか
  43. 43. facet_wrap()を使いましょう • scale = “free”で、分割された各プロット毎に、 軸の目盛りを調整できます。 facet_wrap(~Species) facet_wrap(~Species, scale = “free”)
  44. 44. その3
  45. 45. ①geom_vline()を使いましょう ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) + geom_vline(xintercept = 7, size = 1.5, linetype = 2, colour = "#32CD32") xintercept:x軸の値 size:線の太さ linetype:線の種類 colour:色の指定
  46. 46. ②geom_hline()を使いましょう ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) + geom_hline(yintercept = 3.5, size = 1.5, linetype = 4, colour = “#7D26CD") yintercept:x軸の値 size:線の太さ linetype:線の種類 colour:色の指定
  47. 47. その4
  48. 48. ①xlab()、ylab()を使いましょう ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) + theme_grey(base_family = "HiraKakuProN-W3") + xlab("がく片の長さ") + ylab(“がく片の幅") Macでggplotの出力結果に 日本語を使用する場合は必要
  49. 49. ②labs()でもできます ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + scale_colour_manual(values = colors) + theme_grey(base_family = "HiraKakuProN-W3") + labs(x = "がく片の長さ", y = "がく片の幅")
  50. 50. ついでに凡例も直しましょう ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) + geom_point() + theme_grey(base_family = "HiraKakuProN-W3") + labs(x = "がく片の長さ", y = "がく片の幅") + scale_colour_manual(values = colors, name = "アヤメの品種", labels = c(setosa = "ヒオウギアヤメ", versicolor ="ハナショウブ", virginica = "カキツバタ") )
  51. 51. できた
  52. 52. 他にも色々できます
  53. 53. 知りたい方は • 公式ドキュメントを参考にしましょう • http://ggplot2.tidyverse.org/ • チートシートもあります • https://www.rstudio.com/resources/cheatsheets/ • https://www.rstudio.com/wp- content/uploads/2016/10/ggplot2-cheatsheet-2.0-ja.pdf ( 日本語版)
  54. 54. 知りたい方は • 偉大なるユタニさんのスライド • https://speakerdeck.com/yutannihilation/ggplot2zai-ru-men • 偉大なるうなどんさんのハンズオン資料 • https://mrunadon.github.io/%E6%A6%82%E8%A6%81%E3%82%92 %E3%81%8A%E3%81%95%E3%81%88%E3%81%A6ggplot2%E3 %82%92%E4%BD%BF%E3%81%84%E3%81%93%E3%81%AA% E3%81%99%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88 %E3%83%AA%E3%82%A2%E3%83%AB%E3%81%A8%E3%82% B3%E3%83%BC%E3%83%89%E9%9B%86/#content • https://www.slideshare.net/MrUnadon/hands-on-ggplot2
  55. 55. 分からないことがあれば • r-wakalangで質問しましょう • 素晴らしきお兄さま、お姉さまが答えてくれるかも • #ggplot2チャンネルもあります • https://qiita.com/uri/items/5583e91bb5301ed5a4ba
  56. 56. Enjoy !!

×