SlideShare a Scribd company logo
1 of 35
Download to read offline
#HijiyamaR
2015/5/23
1
紀ノ定保礼
ggplot2によるグラフ化
紀ノ定 保礼
大阪大学大学院人間科学研究科
研究領域:認知心理学,交通心理学,人間工学
普段のRの用途
データ処理(2008年~)
分析(2011年~)
描画(2015年~)
自己紹介
2
可視化ツールとしてのggplot2の紹介
①すでに要約されたデータをグラフ化する
例:A群は平均3点,B群は平均5点(t(19)=3.25,p<.05)
慣習的に行われる,文字 → 図 の変換を補助する役割
②探索的に,変数(間の関係)を理解する
ごちゃごちゃしたデータ(Row data)を用いる
ことも多い
変数を入れ替えやすいこと
複数の変数を同時に表示しやすいこと
③データを視覚的に要約する
本日の発表の目的
3
が重要
可視化ツールとしてのggplot2の紹介
①すでに要約されたデータをグラフ化する
例:A群は平均3点,B群は平均5点(t(19)=3.25,p<.05)
慣習的に行われる,文字 → 図 の変換を補助する役割
②探索的に,変数(間の関係)を理解する
ごちゃごちゃしたデータ(Row data)を用いる
ことも多い
変数を入れ替えやすいこと
複数の変数を同時に表示しやすいこと
③データを視覚的に要約する
本日の発表の目的
4
が重要
5
サンプルデータ:diamonds
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
ggplot2パッケージ内に入っています(53940行×10列)
いったん500行に減らしておきましょう
6
データが多いもので…
library(ggplot2)
diamonds2 <- diamonds[sample(nrow(diamonds),500),]
※注)ggplot2の前にdplyr及びplyrパッケージをロードする
場合は、必ずplyr → dplyrの順に
従来のbaseパッケージで描画する場合
7
重さと価格の関係をみる
plot(diamonds2$carat, diamonds2$price)
8
せめて,質(5段階)別に関係を理解したい
出来ますが…
自分で各水準を定義する
必要あり
plot(diamonds2$carat,diamonds2$price,
pch=21,bg=c("yellow","red","green","blue","pink")[diamonds$cut])
要請①:質ではなく,透明度で区別したい
9
変数の交換
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
10
出来ますが…
水準数が増えた分,
塗り分ける色を
改めて定義する必要
plot(diamonds2$carat,diamonds2$price,
pch=21,bg=c("yellow","red","green","blue","pink",
"brown","lightblue","black")[diamonds$clarity])
要請②:質と色と透明度で区別したい
11
変数の追加
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
基準(要因)の数
水準(条件)の数
・・・が増えるにしたがい,
「区別の仕方」も定義する必要
例:質(5段階)と色(7段階)と透明度(8段階)で 区
別したい
5 + 7 + 8 = 20通りの指定
12
想像がつくと思いますが…
13
変数が増えるほど大変…
記号
サイズ
色
plot(diamonds2$carat,diamonds2$price,
pch=c(3,8,15,16,17)[diamonds$cut],
cex=c(1,1.25,1.5,1.75,2,2.25,2.5)[diamonds$color],
col=c("royalblue","cyan","purple","green3","orange",
"brown","magenta","gray")[diamonds$clarity])
14
そこでggplot2 packageの出番
15
重さと価格の関係をみる
どのような形式で描画するか
(pointなら点)
ggplot(diamonds2,aes(y=price,x=carat))+
geom_point()
データフレーム aes()内で,
各軸の変数や
データの弁別基準を
指定
16
質(5段階)別に,重さと価格の関係をみる
配色もさることながら,
コードがすっきり!
ggplot(diamonds2,aes(y=price,x=carat,color=cut))+
geom_point()
弁別基準はaes()内に
要請①:質ではなく,透明度で区別したい
17
変数の交換
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
18
確かに,塗分け基準が
変わっている
ggplot(diamonds2,aes(y=price,x=carat,color=clarity))+
geom_point()
要請②:質と色と透明度で区別したい
19
変数の追加
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
20
方法その1
確かに,弁別基準が
増えている
ggplot(diamonds2,
aes(y=price,x=carat,
color=color,
size=clarity,
shape=cut))+
geom_point()
21
小さくて分かりにくいと思うので,拡大すると…
22
小さくて
分かりにくいと思うので,
一部を拡大すると…
 レイヤーを重ねて図を調整
 例(もちろん他にも指定可能)
23
描画の仕組み
ggplot(iris,aes(y=Petal.Length,x=Sepal.Length,color=Species))+
geom_point()+
theme_bw()+
ylim(0,10)+
theme(axis.text.x=element_text(size=15),
axis.text.y=element_text(size=15))
基本レイヤー(データ指定)
プロットの仕方の指定
背景の指定
軸目盛の指定
軸の書式の指定
24
方法その2(FACETを用いる)
ggplot(diamonds2,aes(y=price,x=carat,color=color))+
geom_point()+
facet_wrap(cut~clarity)
25
小さくて見えないと思うので拡大
可視化ツールとしてのggplot2の紹介
①すでに要約されたデータをグラフ化する
例:A群は平均3点,B群は平均5点(t(19)=3.25,p<.05)
慣習的に行われる,文字 → 図 の変換を補助する役割
②探索的に,変数(間の関係)を理解する
ごちゃごちゃしたデータ(Row data)を用いる
ことも多い
変数を入れ替えやすいこと
複数の変数を同時に表示しやすいこと
③データを視覚的に要約する
本日の発表の目的
26
が重要
27
たとえデータが53940行もあったって
重さ
質
(5段階)
色
(7段階)
透明度
(8段階)
価格
長さ(mm)
幅(mm)
奥行(mm)
例えば,質(5段階)別に価格の平均をみたい
28
一気に視覚的に要約
ggplot(diamonds,aes(y=price, x=cut))+
stat_summary(fun.y=mean, geom="bar")
29
例えば,質と透明度別に価格の平均をみたい
ggplot(diamonds,aes(y=price,x=cut,fill=clarity))+
stat_summary(fun.y=mean,geom="bar")
ggplot(diamonds,aes(y=price,x=cut,fill=clarity))+
stat_summary(fun.y=mean,geom="bar",position= "dodge")
あっという間
30
色セットを変えたくなったら
31
ggplot(diamonds,aes(y=price,x=clarity,group=cut,color=cut))+
stat_summary(fun.y=mean,geom="point")
レイヤーを重ね描き出来るということは…
ggplot(diamonds,aes(y=price,x=clarity,group=cut,color=cut))+
stat_summary(fun.y=mean,geom="line")
32
レイヤーの重ね描きの成せるわざ
ggplot(diamonds,aes(y=price,x=clarity,group=cut,color=cut))+
stat_summary(fun.y=mean,geom="point")+
stat_summary(fun.y=mean,geom="line")
33
エラーバーだってあっという間
53940行×10列のデータも,
数行でここまで仕上げることが出来る
 箱ひげ図
 平均値
 各計測値
34
代表値だけでなく,各計測値も重畳可能
ggplot(data=iris,aes(y=Sepal.Length,x=Species))+
geom_boxplot()+
stat_summary(fun.y=mean,geom="point",color="red")+
geom_jitter(position=position_jitter())
+
+
35

More Related Content

What's hot

「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京Koichi Hamada
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門shima o
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析Mitsuo Shimohata
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networkstm1966
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話Classi.corp
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデルMasashi Komori
 
Tokyowebmining ctr-predict
Tokyowebmining ctr-predictTokyowebmining ctr-predict
Tokyowebmining ctr-predict正志 坪坂
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38horihorio
 
Imputation of Missing Values using Random Forest
Imputation of Missing Values using  Random ForestImputation of Missing Values using  Random Forest
Imputation of Missing Values using Random ForestSatoshi Kato
 
R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門nocchi_airport
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布についてhoxo_m
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価daiki hojo
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?Fumihiko Takahashi
 

What's hot (20)

「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networks
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
Tokyowebmining ctr-predict
Tokyowebmining ctr-predictTokyowebmining ctr-predict
Tokyowebmining ctr-predict
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
Imputation of Missing Values using Random Forest
Imputation of Missing Values using  Random ForestImputation of Missing Values using  Random Forest
Imputation of Missing Values using Random Forest
 
R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門R Markdownによるドキュメント生成と バージョン管理入門
R Markdownによるドキュメント生成と バージョン管理入門
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 

ggplot2によるグラフ化@HijiyamaR#2