Tokyo r24 r_graph_tutorial

3,078 views

Published on

R Graph Tutorial

Tokyo r24 r_graph_tutorial

  1. 1. グラフ 再入門TOKYO.R #24簑田 高志
  2. 2. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  3. 3. 自己紹介• 名前 :簑田 高志• Twitter :aad34210• 出身地 :熊本県• 出身学部 :法学部• 仕事 :某大手インターネット会社のインター ネット広告(リスティング)のビジネスアナリスト
  4. 4. なぜRグラフなのか• 分析・解析をする上で、対象となるデータがど のような分布や構成比になっているかなど、数 字(平均値、標準偏差や偏差値など)ではイ メージしにくい場合が多い。• その際にデータを可視化する(グラフ)ことに よって、可視化することによって、解析の手助 けになることが多い。• グラフの作り方や見方を知ることによって、知 りたい結果に早くたどり着けるため、グラフの 作り方を知ることはとても重要。
  5. 5. なぜRグラフなのか• ここ数回の発表で、はじめてRを触る方に向け て、「はじめてのR」、「続はじめてのR」と いう発表をさせてもらいました http://www.slideshare.net/aad34210/tokyo-r18 http://www.slideshare.net/aad34210/tokyo-r21-2• その中でも、「Rのグラフは奥深い…」という 話をしました• 続編として、今日はRグラフの話の続きです
  6. 6. そんな話を知ってるよ!という方は…• 私は初心者ではないので、そんな話は聞かなく ても大丈夫!という方。• そういう方は… この本をAmazonで注文し 今日のTokyoRに参加している人が! ておいてください。 持ってくるとサインもらえるかも?! (¥3,990)
  7. 7. 資料中のお約束事 • 資料中は、コードと例文を以下のようにハイライト しています。 • 基本コード:Sample • 例文: Sample
  8. 8. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  9. 9. 散布図• X,Yの2軸上で表現されたグラフ• X,Yの2つの値の関係を見るのに手軽な方法 plot(x,y) x <- c(1:100) y <- c(1:100) plot(x,y)
  10. 10. 散布図(グラフに装飾をする)• plot(x ,y)ではなんの情報なのかよくわからない• タイトルや軸ラベルなどを追加してみよう plot(cars , main = "cars:Speed vs Stopping Distance" , xlab = "Speed(mph)" , ylab = "Stopping Distance(ft)")
  11. 11. 散布図(グラフに装飾をする)• ちょっと見やすくなかったけど、各点がどのよ うな値になってるのかわかりづらい。• 背景にグリッドを表示する。 plot(cars , main = "cars:Speed vs Stopping Distance" , xlab = "Speed(mph)" , ylab = "Stopping Distance(ft)" , type = "n") grid() points(cars)
  12. 12. 散布図(複数グループの散布図を作成)• 調べたいデータにカテゴリがついている• カテゴリごとの分布を知りたい with(iris , plot(Petal.Length , Petal.Width , pch = as.integer(Species)))
  13. 13. 散布図(凡例を追加)• カテゴリごとは見れるけど、どれがどのカテゴ リなのかがわからない。• 凡例を追加 f <- factor(iris$Species) with(iris , plot(Petal.Length , Petal.Width , pch = as.integer(f))) legend(1.5 , 2.4 , as.character(levels(f)), pch = 1:length(levels(f)))
  14. 14. 散布図(垂直線や水平線を追加)• 一定のラインを超えているかどうか、ベンチ マークのラインを追加したい• abline(h = or v = )を使って追加 m <- mean(sma$samp) vm <- mean(sma$ind) plot(sma) abline(h = m) abline(v = vm)
  15. 15. 散布図に回帰直線プロット• 散布図を見ると、回帰直線をひいて当てはまり がよいかどうかを確認したい。install.packages("faraway")library(faraway)data(strongx)m <- lm(crossx ~ energy , data = strongx)plot(crossx ~ energy , data = strongx)abline(m)
  16. 16. 変数を複数の色でプロットする• 変数の中のデータを区分けして色をつけるcolors <- ifelse(samp > 1 , "red" , "blue")plot(samp , lwd = 3 , col = colors)
  17. 17. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  18. 18. 棒グラフ(色をつける)• 棒グラフ作ったけど、味気ない…• col = を利用して、色を付ける heights <- tapply(airquality$Temp , airquality$Month , mean) rel.hts <- (heights - min(heights)) /(max(heights) - min(heights)) grays <- gray(1-rel.hts) barplot(heights , col = grays , ylim = c(50 , 90) ,xpd = FALSE , main = "Mean Temp . by Month" , names.arg = c("May" , "June" , "July" , "Aug" , "Sep") , ylab = "Temp (deg.F)")
  19. 19. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  20. 20. 箱ひげ図を作成• そもそも箱ひげ図とは…? 75%点の 1.5倍に値が あった場合 の点 75%点 (Q3 ) 中央値 25%点 (Q2 ) 25%点の 1.5倍に あった場合 の点
  21. 21. 箱ひげ図を作成• 各カテゴリごとのデータのばらつきはどのよう になっているかを見るのに最適data(UScereal , package = "MASS")boxplot(sugars ~ shelf , data = UScereal , main = "Sugar Content By Shelf" , xlab = "shelf" , ylab = "Sugar(grams per potion)")
  22. 22. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  23. 23. ヒストグラムに密度推定を追加• データのヒストグラムがあり、見かけ密度を表 す曲線を追加したい。samp <- rgamma(500 , 2,2)hist(samp , 20 , prob = T)lines(density(samp))
  24. 24. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  25. 25. 各カテゴリに対して1つの散布図を作成• データ中に複数のカテゴリがあり、それぞれの 散布図を1つのグラフで見たい。data(Cars93 , package = "MASS")coplot(Horsepower ~ MPG.city | Origin , data = Cars93)
  26. 26. 各カテゴリに対して1つの散布図を作成• データ中に複数のカテゴリがあり、それぞれの 散布図を1つのグラフで見たい。coplot(Sepal.Length ~ Petal.Length | Species , data = iris)
  27. 27. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  28. 28. 1ページ中に複数の図を表示する• 1つのページに複数のプロットを並べて表示さ せたい• par(mfrow = c(N , M))を利用して複数のグラフ を作成して並べるpar(mfrow = c(2,2))Quantile <- seq(from = 0 , to = 1 , length.out = 30)plot(Quantile , dbeta(Quantile , 2,4) , type = "l" , main = "first")plot(Quantile , dbeta(Quantile , 4,2) , type = "l" , main = "second")plot(Quantile , dbeta(Quantile , 1,1) , type = "l" , main = "Third")plot(Quantile , dbeta(Quantile , 0.5,0.5) , type = "l" , main = "Forth")Quantile
  29. 29. 目次1. 自己紹介2. なぜRグラフなのか3. 散布図 1) グラフに装飾する(軸ラベル・凡例) 2) 複数グループの散布図を作成 3) 垂直線や水平線を追加 4) 散布図の回帰直線をプロット 5) 変数を複数の色でプロットする4. 棒グラフ 1) 棒グラフに色をつける5. 箱ひげ図を作成6. ヒストグラムと密度推定7. 各ファクタ水準に対して、1つの散布図を作成8. 1ページに複数の図を表示する9. ファイルに書き出す ※ スクリーンショットや機能等はMac版となります。
  30. 30. ファイルに書き出す• 作成した図を書き出したい• savePlot(filename = “file_name” , type = “type” ) で書き出せるpng("myplot.png" , width = 648 , height = 432 )par(mfrow = c(2,2))Quantile <- seq(from = 0 , to = 1 , length.out = 30)plot(Quantile , dbeta(Quantile , 2,4) , type = "l" , main = "first")plot(Quantile , dbeta(Quantile , 4,2) , type = "l" , main = "second")plot(Quantile , dbeta(Quantile , 1,1) , type = "l" , main = "Third")plot(Quantile , dbeta(Quantile , 0.5,0.5) , type = "l" , main = "Forth")dev.off()
  31. 31. 参考(1):ggplot2• これまで紹介したのはRのデフォルトで利用できるパッケージ。• 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラ フを書きたい場合は、ggplot2というパッケージがおすすめ。• 過去に発表しています。 • http://www.slideshare.net/aad34210/ggplot2-110129-6739813
  32. 32. 参考(2):demo()• demo()という関数を利用することで、パッケージの参照デモをみること ができます。 #demo()のgraphicsを見てみる demo(graphics) Given : depth Edgar Andersons Iris Data 100 200 300 400 500 600 Notched Boxplots 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 7.5 6 6.5 Sepal.Length 5.5 4.5 165 170 175 180 185 165 170 175 180 185 4 -102.0 2.5 3.0 3.5 4.0 -15 Sepal.Width -20 -25 2 -30 7 6 -35 5 lat Petal.Length 4 -10 3 -15 2 0 1 -200.5 1.0 1.5 2.0 2.5 -25 -30 Petal.Width -35 1 2 3 4 5 6 7 8 9 10 165 170 175 180 185 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Group long
  33. 33. 参考(3):グラフサンプル集• ネット上では有益なサンプル集がありますので、それを利用しない手は ありません。 ■R Graphical Manual http://rgm2.lab.nig.ac.jp/RGM2/images.php?show=all&pageID=1958• 過去に発表しています。 • http://www.slideshare.net/aad34210/tokyo-r-no8
  34. 34. まとめ • 散布図 • 棒グラフ • 箱ひげ図 • ヒストグラム • 複数のグラフを一枚で書く • グラフファイルを書き出す
  35. 35. 参考文献・資料 R クックブック :http://www.oreilly.co.jp/books/9784873115337/
  36. 36. ご清聴ありがとうございました m(___)m

×