グラフ
              再入門
TOKYO.R #24
簑田   高志
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
自己紹介



•   名前      :簑田 高志
•   Twitter :aad34210
•   出身地     :熊本県
•   出身学部    :法学部
•   仕事      :某大手インターネット会社のインター
    ネット広告(リスティング)のビジネスアナリスト
なぜRグラフなのか
• 分析・解析をする上で、対象となるデータがど
  のような分布や構成比になっているかなど、数
  字(平均値、標準偏差や偏差値など)ではイ
  メージしにくい場合が多い。

• その際にデータを可視化する(グラフ)ことに
  よって、可視化することによって、解析の手助
  けになることが多い。

• グラフの作り方や見方を知ることによって、知
  りたい結果に早くたどり着けるため、グラフの
  作り方を知ることはとても重要。
なぜRグラフなのか
• ここ数回の発表で、はじめてRを触る方に向け
  て、「はじめてのR」、「続はじめてのR」と
  いう発表をさせてもらいました




 http://www.slideshare.net/aad34210/tokyo-r18   http://www.slideshare.net/aad34210/tokyo-r21-2




• その中でも、「Rのグラフは奥深い…」という
  話をしました
• 続編として、今日はRグラフの話の続きです
そんな話を知ってるよ!という方は…
•   私は初心者ではないので、そんな話は聞かなく
    ても大丈夫!という方。
•   そういう方は…




    この本をAmazonで注文し   今日のTokyoRに参加している人が!
    ておいてください。        持ってくるとサインもらえるかも?!
    (¥3,990)
資料中のお約束事
 • 資料中は、コードと例文を以下のようにハイライト
   しています。
    • 基本コード:Sample
    • 例文: Sample
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
散布図
• X,Yの2軸上で表現されたグラフ
• X,Yの2つの値の関係を見るのに手軽な方法
 plot(x,y)
 x <- c(1:100)
 y <- c(1:100)
 plot(x,y)
散布図(グラフに装飾をする)
• plot(x ,y)ではなんの情報なのかよくわからない
• タイトルや軸ラベルなどを追加してみよう
 plot(cars ,
           main = "cars:Speed vs Stopping Distance" ,
           xlab = "Speed(mph)" ,
           ylab = "Stopping Distance(ft)")
散布図(グラフに装飾をする)
• ちょっと見やすくなかったけど、各点がどのよ
  うな値になってるのかわかりづらい。
• 背景にグリッドを表示する。
 plot(cars ,
           main = "cars:Speed vs Stopping Distance" ,
           xlab = "Speed(mph)" ,
           ylab = "Stopping Distance(ft)" ,
           type = "n")
 grid()
 points(cars)
散布図(複数グループの散布図を作成)
• 調べたいデータにカテゴリがついている
• カテゴリごとの分布を知りたい
 with(iris , plot(Petal.Length , Petal.Width , pch = as.integer(Species)))
散布図(凡例を追加)
• カテゴリごとは見れるけど、どれがどのカテゴ
  リなのかがわからない。
• 凡例を追加
 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)))
散布図(垂直線や水平線を追加)
• 一定のラインを超えているかどうか、ベンチ
  マークのラインを追加したい
• abline(h = or v = )を使って追加
 m <- mean(sma$samp)
 vm <- mean(sma$ind)
 plot(sma)
 abline(h = m)
 abline(v = vm)
散布図に回帰直線プロット
• 散布図を見ると、回帰直線をひいて当てはまり
  がよいかどうかを確認したい。
install.packages("faraway")
library(faraway)
data(strongx)
m <- lm(crossx ~ energy , data = strongx)
plot(crossx ~ energy , data = strongx)
abline(m)
変数を複数の色でプロットする
• 変数の中のデータを区分けして色をつける

colors <- ifelse(samp > 1 , "red" , "blue")
plot(samp , lwd = 3 , col = colors)
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
棒グラフ(色をつける)
• 棒グラフ作ったけど、味気ない…
• 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)")
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
箱ひげ図を作成
• そもそも箱ひげ図とは…?
                 75%点の
                 1.5倍に値が
                 あった場合
                    の点



                 75%点
                  (Q3
                   )


                 中央値


                 25%点
                  (Q2
                   )
                 25%点の
                  1.5倍に
                 あった場合
                    の点
箱ひげ図を作成
• 各カテゴリごとのデータのばらつきはどのよう
  になっているかを見るのに最適
data(UScereal , package = "MASS")
boxplot(sugars ~ shelf , data = UScereal ,
         main = "Sugar Content By Shelf" ,
         xlab = "shelf" , ylab = "Sugar(grams per potion)")
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
ヒストグラムに密度推定を追加
• データのヒストグラムがあり、見かけ密度を表
  す曲線を追加したい。
samp <- rgamma(500 , 2,2)
hist(samp , 20 , prob = T)
lines(density(samp))
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
各カテゴリに対して1つの散布図を作成
• データ中に複数のカテゴリがあり、それぞれの
  散布図を1つのグラフで見たい。
data(Cars93 , package = "MASS")
coplot(Horsepower ~ MPG.city | Origin , data = Cars93)
各カテゴリに対して1つの散布図を作成
• データ中に複数のカテゴリがあり、それぞれの
  散布図を1つのグラフで見たい。
coplot(Sepal.Length ~ Petal.Length | Species , data = iris)
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
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
目次
1. 自己紹介
2. なぜRグラフなのか
3. 散布図
    1) グラフに装飾する(軸ラベル・凡例)
    2) 複数グループの散布図を作成
    3) 垂直線や水平線を追加
    4) 散布図の回帰直線をプロット
    5) 変数を複数の色でプロットする
4. 棒グラフ
    1) 棒グラフに色をつける
5. 箱ひげ図を作成
6. ヒストグラムと密度推定
7. 各ファクタ水準に対して、1つの散布図を作成
8. 1ページに複数の図を表示する
9. ファイルに書き出す




                 ※ スクリーンショットや機能等はMac版となります。
ファイルに書き出す
• 作成した図を書き出したい
• 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()
参考(1):ggplot2
• これまで紹介したのはRのデフォルトで利用できるパッケージ。
• 自分で色々と細かく設定できるのがメリットですが、簡単に綺麗なグラ
  フを書きたい場合は、ggplot2というパッケージがおすすめ。




• 過去に発表しています。
   • http://www.slideshare.net/aad34210/ggplot2-110129-6739813
参考(2):demo()
• demo()という関数を利用することで、パッケージの参照デモをみること
  ができます。
                                  #demo()のgraphicsを見てみる
                                  demo(graphics)




                                                                                                                                                                                               Given : depth
                                                Edgar Anderson's 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
                                                                                                                                                                                                                                                       -10
2.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




                                                                                                                                               -20
0.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
参考(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
まとめ

 • 散布図

 • 棒グラフ

 • 箱ひげ図

 • ヒストグラム

 • 複数のグラフを一枚で書く

 • グラフファイルを書き出す
参考文献・資料
  R クックブック   :http://www.oreilly.co.jp/books/9784873115337/
ご清聴ありがとうございました
     m(___)m

Tokyo r24 r_graph_tutorial