SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
ggplot2
パッケージ作成者: Wickham さんの話を聞いて





                       簑田 高志
目次

 1. 自己紹介
 2. 統数研でのセミナー
 3. 今日の話の構成
 4. ggplot2 とはどんなパッケージ?
 5. インストール方法
 6. 基本的な使い方
 7. 具体的にやってみよう
 8. まとめ
 9. 参考資料



01/29/11                   2
自己紹介


     Twitter     aad34210
                 http://pracmper.blogspot.com/


                                    Web



               : MGSPW




01/29/11                                            3
統数研でのセミナー


01/29/11               4
統数研でのセミナー

     11 月 25 日:統計数理研究所で海外のスピーカーを招い
     て、セミナーが行われました。
     今回は 2 人の方が参加されました。
           ggplot2 のパッケージ開発者        Hadley Wickham さん
           黄色い本を書かれた                Uwe Ligges さん
     概要は以下の URL に公開されています。
      http://jasp.ism.ac.jp/~nakanoj/workshop10/2010Rmeetin
      g.htm




01/29/11                                                  5
統数研でのセミナー

     Wickham さんは ( 当然 )ggplot2 の話。 WorkShop
     形式で話をされて、課題をしながら進めていきま
     した。
     Ligges さんは CRAN の運営の話しとパッケージの
     話。みなさんがアップロードされたパッケージの
     メンテナンスをしてくれています。




01/29/11                                      6
今日の話の構成


01/29/11             7
今日の話の構成

     時間は最大 30 分〜 40 分ぐらい。
     インストール〜使い方まで。
     ベースは統数研のセミナーで使われた資料を元に
     アレンジしています。
     具体的にデモをやりつつ進めていきます。
     こんな人向け
           デフォルトの plot ではちょっと物足りない…
           きれいなグラフを作りたい。



01/29/11                              8
ggplot2 とは
           どんなパッケージ?

01/29/11                  9
ggplot2 とはどんなパッケージ?

     ggplot2 とは?
           ggplot2 is a plotting system for R, based on the
           grammar of graphics, which tries to take the good parts
           of base and lattice graphics and none of the bad parts.
           It takes care of many of the fiddly details that make
           plotting a hassle (like drawing legends) as well as
           providing a powerful model of graphics that makes it
           easy to produce complex multi-layered graphics
           超意訳:グラフ文法をベースにした R の描画機能。簡
           単にきれいでパワフルなグラフがかけまっせ!
                                              出典: http://had.co.nz/ggplot2/




01/29/11                                                                 10
ggplot2 とはどんなパッケージ?

     具体的にはどんなグラフが描けるのか?




01/29/11                        11
インストール方法


01/29/11              12
インストール方法

     他のインストールパッケージと全く同じ
      install.packages(“ggplot2”)
      library(ggplot2)
     初めてインストールする場合は、 CRAN のロケーション
     を選んでください。
                    Japan(Hyogo)
                    Japan(Tsukuba)
                    を選択してください。
                    (画面は MacOS 版)




01/29/11                                    13
基本的な使い方


01/29/11             14
基本的な使い方

     ggplot2 には 2 つの構文があります。
           ggplot([data] , aes(x = X 軸
 , y = Y 軸 )) : データ定義

              + geom_          () : 出力するグラフ
              + geom_          () : 出力するグラフ 2
              + xlim( 最小値 , 最大値 ) + ylim( 最小値 , 最大値 )
              + xlab(X 軸ラベル )+ ylab(Y 軸ラベル ) などなど…
     例)
             ggplot(movies, aes(x=mpaa, y=rating))
             +geom_jitter(aes(colour=rating))+xlab(“ 対象年令” ) +
             ylab(“ レーティング” )


01/29/11                                                         15
基本的な使い方

     ggplot2 には 2 つの構文があります。
           qplot(x , y , data = [data] , geom = グラフ )
     例)
             qplot(mpaa, rating,
             data=movies,geom=c("boxplot","jitter"))


     ggplot~,qplot も構文が違うだけで同じグラフを作ってくれま
     す。





01/29/11                                                      16
具体的にやってみよう


01/29/11        17
具体的にやってみよう

     利用するデータ: diamonds (ggplot パッケージに同梱)
     呼び出し方: data(diamonds)
     サンプルデータ
(ダイアモンドのデータ)
     carat   cut color clarity depth table price x y z
     1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
     2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
     3 0.23   Good E VS1 56.9 65 327 4.05 4.07 2.31
     4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63
     5 0.31   Good J SI2 63.3 58 335 4.34 4.35 2.75
     6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48




01/29/11                                                  18
具体的にやってみよう(棒グラフ)

   ■ 変数
 cut , carat の棒グラフと、 X 軸の間隔を調整してみよう。
   ・ qplot(cut, data = diamonds)
   ・ ggplot(diamonds , aes(cut)) + geom_bar()

   ・ qplot(carat, data = diamonds)
   ・ ggplot(diamonds , aes(carat)) + geom_bar()

   ・ qplot(carat, data = diamonds, binwidth = 1)
   ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 1)

   ・ qplot(carat, data = diamonds, binwidth = 0.1)
   ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 0.1)

   ・ qplot(carat, data = diamonds, binwidth = 0.01)
   ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 0.1)

01/29/11                                                            19
具体的にやってみよう(棒グラフ・六角形)

   ■ 変数
 depth を
 Cut ごとでみてみよう
   ・ qplot(depth, data = diamonds, binwidth = 0.2, fill = cut) + xlim(55, 70)
   ・ ggplot(diamonds , aes(depth , fill = cut)) + geom_bar(binwidth = 0.2) +
   xlim (55 , 70)

   ■ 変数
 depth を
 Cut ごとでみてみよう
   ・ qplot(depth, data = diamonds, binwidth = 0.2) + xlim(55, 70) +
   facet_wrap(~ cut)
   ・
 ggplot(diamonds , aes(depth)) + geom_bar(binwidth = 0.2) + xlim(55 ,
   70) + facet_wrap(~cut)

   ■ もうちょっとかっこ良く (hexbin パッケージが必要かも ) 六角形
   ・ qplot(log10(carat), log10(price), data = diamonds,geom = "hex", bins =
   10) + facet_wrap(~ cut)



01/29/11                                                                        20
具体的にやってみよう(散布図・平均直線・回帰直線)

   ■ 変数
 price と
 carat の関係をみてみたい。(散布図)
   ・ qplot(price, carat, data = diamonds, colour = I("blue"))
   ・ ggplot(diamonds , aes(x = price , y = carat)) + geom_jitter(colour =
   I("blue") )

   ■ ラインを引いてみよう
   - 条件つき平均
   ・ ggplot(diamonds , aes(price , carat)) + geom_jitter(colour = I("blue") ) +
   geom_smooth(colour = "red")
   - 回帰直線
   ・ ggplot(diamonds , aes(price , carat)) + geom_jitter() +
   geom_smooth(method = "lm")
   このラインの詳細はこちら
   http://had.co.nz/ggplot2/geom_smooth.html



01/29/11                                                                          21
具体的にやってみよう(透過グラフ)

   ■ 変数
 price と
 carat の関係の強い所だけ見てみたい。
    (グラフを透過的にしてみる)
   ・ qplot(price, carat, data = diamonds, alpha = I(1/10))
   ・ qplot(price, carat, data = diamonds, alpha = I(1/50))
   ・ qplot(price, carat, data = diamonds, alpha = I(1/100))
   ・ qplot(price, carat, data = diamonds, alpha = I(1/250))




01/29/11                                                      22
具体的にやってみよう(箱ヒゲ図)

   ■ 最後に Boxplot との重ね書き(箱ヒゲ図)
   ※
 データを切り替えます: movie
   ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter()
   ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter(aes(colour =
   rating))
   ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter(aes(colour =
   rating)) + geom_boxplot()




01/29/11                                                                      23
まとめ


01/29/11         24
まとめ

   ➔
     ggplot の構文
       ➔
         ggplot(data , aes(x 軸 , y 軸 )) + geom_( グラフ種類 )~~
       ➔
         qplot(x 軸
 , y 軸
 , data , geom = ( グラフ種類 ))~~

   ➔
     様々なオプション
       ➔
           Xlab , ylab , xlim , ylim, log など…

   ➔
     グラフの重ね書き
       ➔
         ggplot の場合: ~+ geom_jitter() + geom_boxplot() のように連結
         していけばよい。
       ➔
         qplot の場合:
 geom = c(“jitter” , “boxplot”) のように c() で追加




01/29/11                                                           25
参考文献


01/29/11          26
今日の話の構成

     ggplot2 マニュアル
       http://had.co.nz/ggplot2/
           利用する時にとても参考になります。
     統数研セミナー概要
      http://jasp.ism.ac.jp/~nakanoj/workshop10/2010Rmeeting.ht
      m
     セミナー資料
        http://had.co.nz/courses/10-tokyo/
     SlideShare(Hadly Wickham)
        http://www.slideshare.net/hadley/presentations



01/29/11                                                      27
ご清聴
  ありがとうございました
      m(__)m

01/29/11        28

Mais conteúdo relacionado

Mais procurados

pre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipgf2alpha
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢ytanno
 
Rの初歩: 6. グラフィックス
Rの初歩:  6. グラフィックスRの初歩:  6. グラフィックス
Rの初歩: 6. グラフィックスTeiko Suzuki
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
The boolean operation for Cubic Bezier
The boolean operation for Cubic BezierThe boolean operation for Cubic Bezier
The boolean operation for Cubic Beziermikanplus
 
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~MrUnadon
 
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)Akira Asano
 
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709swkagami
 
PFDS 5.5 Pairing heap
PFDS 5.5 Pairing heapPFDS 5.5 Pairing heap
PFDS 5.5 Pairing heap昌平 村山
 
OpenCV affine matrix operation
OpenCV  affine matrix operationOpenCV  affine matrix operation
OpenCV affine matrix operationgrantkobe
 
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)Akira Asano
 

Mais procurados (20)

pre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonaccipre: 数列で学ぶ初めての CommonLisp #fibonacci
pre: 数列で学ぶ初めての CommonLisp #fibonacci
 
CG2013 06
CG2013 06CG2013 06
CG2013 06
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
Rの初歩: 6. グラフィックス
Rの初歩:  6. グラフィックスRの初歩:  6. グラフィックス
Rの初歩: 6. グラフィックス
 
Za atsu-20170328
Za atsu-20170328Za atsu-20170328
Za atsu-20170328
 
CG2013 03
CG2013 03CG2013 03
CG2013 03
 
CG2013 02
CG2013 02CG2013 02
CG2013 02
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
The boolean operation for Cubic Bezier
The boolean operation for Cubic BezierThe boolean operation for Cubic Bezier
The boolean operation for Cubic Bezier
 
CG2013 05
CG2013 05CG2013 05
CG2013 05
 
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
 
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)
2020年度秋学期 画像情報処理 第4回 離散フーリエ変換 (2020. 10. 16)
 
Pyramid
PyramidPyramid
Pyramid
 
CG2013 08
CG2013 08CG2013 08
CG2013 08
 
CG2013 11
CG2013 11CG2013 11
CG2013 11
 
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
 
PFDS 5.5 Pairing heap
PFDS 5.5 Pairing heapPFDS 5.5 Pairing heap
PFDS 5.5 Pairing heap
 
OpenCV affine matrix operation
OpenCV  affine matrix operationOpenCV  affine matrix operation
OpenCV affine matrix operation
 
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)
2020年度秋学期 画像情報処理 第3回 フーリエ変換とサンプリング定理 (2020. 10. 9)
 

Destaque

TwitterのデータをRであれこれ
TwitterのデータをRであれこれTwitterのデータをRであれこれ
TwitterのデータをRであれこれTakeshi Arabiki
 
3次元のデータをグラフにする(Tokyo.R#17)
3次元のデータをグラフにする(Tokyo.R#17)3次元のデータをグラフにする(Tokyo.R#17)
3次元のデータをグラフにする(Tokyo.R#17)Takumi Tsutaya
 
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクトyutannihilation
 
ggplot2できれいなグラフ
ggplot2できれいなグラフggplot2できれいなグラフ
ggplot2できれいなグラフDaisuke Ichikawa
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2nocchi_airport
 
ggplot2用例集 入門編
ggplot2用例集 入門編ggplot2用例集 入門編
ggplot2用例集 入門編nocchi_airport
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)Hiroshi Shimizu
 

Destaque (7)

TwitterのデータをRであれこれ
TwitterのデータをRであれこれTwitterのデータをRであれこれ
TwitterのデータをRであれこれ
 
3次元のデータをグラフにする(Tokyo.R#17)
3次元のデータをグラフにする(Tokyo.R#17)3次元のデータをグラフにする(Tokyo.R#17)
3次元のデータをグラフにする(Tokyo.R#17)
 
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
 
ggplot2できれいなグラフ
ggplot2できれいなグラフggplot2できれいなグラフ
ggplot2できれいなグラフ
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2
 
ggplot2用例集 入門編
ggplot2用例集 入門編ggplot2用例集 入門編
ggplot2用例集 入門編
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 

Semelhante a ggplot2 110129

130727 nagoyar presentation
130727 nagoyar presentation130727 nagoyar presentation
130727 nagoyar presentationTakayuki Nuimura
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdfTakuya Kubo
 
R言語勉強会#9.pdf
R言語勉強会#9.pdfR言語勉強会#9.pdf
R言語勉強会#9.pdfTakuya Kubo
 
IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0Eiji Kamiya
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29西岡 賢一郎
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろいKohei Otsuka
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来Hidekazu Oiwa
 
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1OkKubo_Takuya
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 Kenta Oono
 
Introduction to R Graphics with ggplot2 #1
Introduction to R Graphics with ggplot2 #1Introduction to R Graphics with ggplot2 #1
Introduction to R Graphics with ggplot2 #1nozma
 
XP寺子屋第9回「シンプル・プログラミング」
XP寺子屋第9回「シンプル・プログラミング」XP寺子屋第9回「シンプル・プログラミング」
XP寺子屋第9回「シンプル・プログラミング」takepu
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用Nobuaki Oshiro
 

Semelhante a ggplot2 110129 (20)

ggplot2 110129
ggplot2 110129ggplot2 110129
ggplot2 110129
 
130727 nagoyar presentation
130727 nagoyar presentation130727 nagoyar presentation
130727 nagoyar presentation
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
R言語勉強会#10.pdf
R言語勉強会#10.pdfR言語勉強会#10.pdf
R言語勉強会#10.pdf
 
R言語勉強会#9.pdf
R言語勉強会#9.pdfR言語勉強会#9.pdf
R言語勉強会#9.pdf
 
IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0IbisPaintのOpenGLES2.0
IbisPaintのOpenGLES2.0
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろい
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok
分割表の作図・GLM・ベイズモデル http://goo.gl/qQ1Ok
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
 
Introduction to R Graphics with ggplot2 #1
Introduction to R Graphics with ggplot2 #1Introduction to R Graphics with ggplot2 #1
Introduction to R Graphics with ggplot2 #1
 
XP寺子屋第9回「シンプル・プログラミング」
XP寺子屋第9回「シンプル・プログラミング」XP寺子屋第9回「シンプル・プログラミング」
XP寺子屋第9回「シンプル・プログラミング」
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
Halide for Memory
Halide for MemoryHalide for Memory
Halide for Memory
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 

Mais de Takashi Minoda

Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)Takashi Minoda
 
RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)Takashi Minoda
 
RからGoogle Cloud Vision API を利用する
RからGoogle Cloud Vision API を利用するRからGoogle Cloud Vision API を利用する
RからGoogle Cloud Vision API を利用するTakashi Minoda
 
TokyoR:RMarkdownでレポート作成
TokyoR:RMarkdownでレポート作成TokyoR:RMarkdownでレポート作成
TokyoR:RMarkdownでレポート作成Takashi Minoda
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RTakashi Minoda
 
Tokyo r24 r_graph_tutorial
Tokyo r24 r_graph_tutorialTokyo r24 r_graph_tutorial
Tokyo r24 r_graph_tutorialTakashi Minoda
 

Mais de Takashi Minoda (20)

Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)
 
RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)
 
RからGoogle Cloud Vision API を利用する
RからGoogle Cloud Vision API を利用するRからGoogle Cloud Vision API を利用する
RからGoogle Cloud Vision API を利用する
 
TokyoR:RMarkdownでレポート作成
TokyoR:RMarkdownでレポート作成TokyoR:RMarkdownでレポート作成
TokyoR:RMarkdownでレポート作成
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.R
 
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
 
Tokyo r49 beginner
Tokyo r49 beginnerTokyo r49 beginner
Tokyo r49 beginner
 
Tokyo r47 beginner
Tokyo r47 beginnerTokyo r47 beginner
Tokyo r47 beginner
 
Tokyo r47 beginner_2
Tokyo r47 beginner_2Tokyo r47 beginner_2
Tokyo r47 beginner_2
 
Tokyo r45 beginner_2
Tokyo r45 beginner_2Tokyo r45 beginner_2
Tokyo r45 beginner_2
 
Tokyo r39 beginner
Tokyo r39 beginnerTokyo r39 beginner
Tokyo r39 beginner
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
Tokyo r30 anova_part2
Tokyo r30 anova_part2Tokyo r30 anova_part2
Tokyo r30 anova_part2
 
Tokyo r30 anova
Tokyo r30 anovaTokyo r30 anova
Tokyo r30 anova
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 
Tokyo r24 r_graph_tutorial
Tokyo r24 r_graph_tutorialTokyo r24 r_graph_tutorial
Tokyo r24 r_graph_tutorial
 
Tokyo r21 修正版
Tokyo r21 修正版Tokyo r21 修正版
Tokyo r21 修正版
 

ggplot2 110129

  • 2. 目次 1. 自己紹介 2. 統数研でのセミナー 3. 今日の話の構成 4. ggplot2 とはどんなパッケージ? 5. インストール方法 6. 基本的な使い方 7. 具体的にやってみよう 8. まとめ 9. 参考資料 01/29/11 2
  • 3. 自己紹介 Twitter aad34210 http://pracmper.blogspot.com/ Web : MGSPW 01/29/11 3
  • 5. 統数研でのセミナー 11 月 25 日:統計数理研究所で海外のスピーカーを招い て、セミナーが行われました。 今回は 2 人の方が参加されました。 ggplot2 のパッケージ開発者 Hadley Wickham さん 黄色い本を書かれた Uwe Ligges さん 概要は以下の URL に公開されています。 http://jasp.ism.ac.jp/~nakanoj/workshop10/2010Rmeetin g.htm 01/29/11 5
  • 6. 統数研でのセミナー Wickham さんは ( 当然 )ggplot2 の話。 WorkShop 形式で話をされて、課題をしながら進めていきま した。 Ligges さんは CRAN の運営の話しとパッケージの 話。みなさんがアップロードされたパッケージの メンテナンスをしてくれています。 01/29/11 6
  • 8. 今日の話の構成 時間は最大 30 分〜 40 分ぐらい。 インストール〜使い方まで。 ベースは統数研のセミナーで使われた資料を元に アレンジしています。 具体的にデモをやりつつ進めていきます。 こんな人向け デフォルトの plot ではちょっと物足りない… きれいなグラフを作りたい。 01/29/11 8
  • 9. ggplot2 とは どんなパッケージ? 01/29/11 9
  • 10. ggplot2 とはどんなパッケージ? ggplot2 とは? ggplot2 is a plotting system for R, based on the grammar of graphics, which tries to take the good parts of base and lattice graphics and none of the bad parts. It takes care of many of the fiddly details that make plotting a hassle (like drawing legends) as well as providing a powerful model of graphics that makes it easy to produce complex multi-layered graphics 超意訳:グラフ文法をベースにした R の描画機能。簡 単にきれいでパワフルなグラフがかけまっせ! 出典: http://had.co.nz/ggplot2/ 01/29/11 10
  • 11. ggplot2 とはどんなパッケージ? 具体的にはどんなグラフが描けるのか? 01/29/11 11
  • 13. インストール方法 他のインストールパッケージと全く同じ install.packages(“ggplot2”) library(ggplot2) 初めてインストールする場合は、 CRAN のロケーション を選んでください。 Japan(Hyogo) Japan(Tsukuba) を選択してください。 (画面は MacOS 版) 01/29/11 13
  • 15. 基本的な使い方 ggplot2 には 2 つの構文があります。 ggplot([data] , aes(x = X 軸
 , y = Y 軸 )) : データ定義
 + geom_ () : 出力するグラフ + geom_ () : 出力するグラフ 2 + xlim( 最小値 , 最大値 ) + ylim( 最小値 , 最大値 ) + xlab(X 軸ラベル )+ ylab(Y 軸ラベル ) などなど… 例) ggplot(movies, aes(x=mpaa, y=rating)) +geom_jitter(aes(colour=rating))+xlab(“ 対象年令” ) + ylab(“ レーティング” ) 01/29/11 15
  • 16. 基本的な使い方 ggplot2 には 2 つの構文があります。 qplot(x , y , data = [data] , geom = グラフ ) 例) qplot(mpaa, rating, data=movies,geom=c("boxplot","jitter")) ggplot~,qplot も構文が違うだけで同じグラフを作ってくれま す。
 01/29/11 16
  • 18. 具体的にやってみよう 利用するデータ: diamonds (ggplot パッケージに同梱) 呼び出し方: data(diamonds) サンプルデータ
(ダイアモンドのデータ) carat cut color clarity depth table price x y z 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31 4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48 01/29/11 18
  • 19. 具体的にやってみよう(棒グラフ) ■ 変数
 cut , carat の棒グラフと、 X 軸の間隔を調整してみよう。 ・ qplot(cut, data = diamonds) ・ ggplot(diamonds , aes(cut)) + geom_bar() ・ qplot(carat, data = diamonds) ・ ggplot(diamonds , aes(carat)) + geom_bar() ・ qplot(carat, data = diamonds, binwidth = 1) ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 1) ・ qplot(carat, data = diamonds, binwidth = 0.1) ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 0.1) ・ qplot(carat, data = diamonds, binwidth = 0.01) ・ ggplot(diamonds , aes(x = carat)) + geom_bar(binwidth = 0.1) 01/29/11 19
  • 20. 具体的にやってみよう(棒グラフ・六角形) ■ 変数
 depth を
 Cut ごとでみてみよう ・ qplot(depth, data = diamonds, binwidth = 0.2, fill = cut) + xlim(55, 70) ・ ggplot(diamonds , aes(depth , fill = cut)) + geom_bar(binwidth = 0.2) + xlim (55 , 70) ■ 変数
 depth を
 Cut ごとでみてみよう ・ qplot(depth, data = diamonds, binwidth = 0.2) + xlim(55, 70) + facet_wrap(~ cut) ・
 ggplot(diamonds , aes(depth)) + geom_bar(binwidth = 0.2) + xlim(55 , 70) + facet_wrap(~cut) ■ もうちょっとかっこ良く (hexbin パッケージが必要かも ) 六角形 ・ qplot(log10(carat), log10(price), data = diamonds,geom = "hex", bins = 10) + facet_wrap(~ cut) 01/29/11 20
  • 21. 具体的にやってみよう(散布図・平均直線・回帰直線) ■ 変数
 price と
 carat の関係をみてみたい。(散布図) ・ qplot(price, carat, data = diamonds, colour = I("blue")) ・ ggplot(diamonds , aes(x = price , y = carat)) + geom_jitter(colour = I("blue") ) ■ ラインを引いてみよう - 条件つき平均 ・ ggplot(diamonds , aes(price , carat)) + geom_jitter(colour = I("blue") ) + geom_smooth(colour = "red") - 回帰直線 ・ ggplot(diamonds , aes(price , carat)) + geom_jitter() + geom_smooth(method = "lm") このラインの詳細はこちら http://had.co.nz/ggplot2/geom_smooth.html 01/29/11 21
  • 22. 具体的にやってみよう(透過グラフ) ■ 変数
 price と
 carat の関係の強い所だけ見てみたい。  (グラフを透過的にしてみる) ・ qplot(price, carat, data = diamonds, alpha = I(1/10)) ・ qplot(price, carat, data = diamonds, alpha = I(1/50)) ・ qplot(price, carat, data = diamonds, alpha = I(1/100)) ・ qplot(price, carat, data = diamonds, alpha = I(1/250)) 01/29/11 22
  • 23. 具体的にやってみよう(箱ヒゲ図) ■ 最後に Boxplot との重ね書き(箱ヒゲ図) ※
 データを切り替えます: movie ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter() ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter(aes(colour = rating)) ・ ggplot(movies , aes(x = mpaa , y = rating)) + geom_jitter(aes(colour = rating)) + geom_boxplot() 01/29/11 23
  • 25. まとめ ➔ ggplot の構文 ➔ ggplot(data , aes(x 軸 , y 軸 )) + geom_( グラフ種類 )~~ ➔ qplot(x 軸
 , y 軸
 , data , geom = ( グラフ種類 ))~~ ➔ 様々なオプション ➔ Xlab , ylab , xlim , ylim, log など… ➔ グラフの重ね書き ➔ ggplot の場合: ~+ geom_jitter() + geom_boxplot() のように連結 していけばよい。 ➔ qplot の場合:
 geom = c(“jitter” , “boxplot”) のように c() で追加 01/29/11 25
  • 27. 今日の話の構成 ggplot2 マニュアル http://had.co.nz/ggplot2/ 利用する時にとても参考になります。 統数研セミナー概要 http://jasp.ism.ac.jp/~nakanoj/workshop10/2010Rmeeting.ht m セミナー資料 http://had.co.nz/courses/10-tokyo/ SlideShare(Hadly Wickham) http://www.slideshare.net/hadley/presentations 01/29/11 27