SlideShare a Scribd company logo
#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

Tokyor42 ggplot2
Tokyor42 ggplot2Tokyor42 ggplot2
Tokyor42 ggplot2Yohei Sato
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRDaisuke Yoneoka
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
Takashi Yamane
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
Koichi Hamada
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
Shuyo Nakatani
 
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!takehikoihayashi
 
Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門
nocchi_airport
 
Stanでガウス過程
Stanでガウス過程Stanでガウス過程
Stanでガウス過程
Hiroshi Shimizu
 
時系列分析入門
時系列分析入門時系列分析入門
時系列分析入門
Miki Katsuragi
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
Seiya Tokui
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
Takashi J OZAKI
 
ベータ分布の謎に迫る
ベータ分布の謎に迫るベータ分布の謎に迫る
ベータ分布の謎に迫る
Ken'ichi Matsui
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
Stanとdlmによる状態空間モデル
Stanとdlmによる状態空間モデルStanとdlmによる状態空間モデル
Stanとdlmによる状態空間モデル
Hiroki Itô
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
Sercan Ahi
 
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
Shinohara Masahiro
 

What's hot (20)

Tokyor42 ggplot2
Tokyor42 ggplot2Tokyor42 ggplot2
Tokyor42 ggplot2
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
 
Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門
 
Stanでガウス過程
Stanでガウス過程Stanでガウス過程
Stanでガウス過程
 
時系列分析入門
時系列分析入門時系列分析入門
時系列分析入門
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
計量時系列分析の立場からビジネスの現場のデータを見てみよう - 30th Tokyo Webmining
 
ベータ分布の謎に迫る
ベータ分布の謎に迫るベータ分布の謎に迫る
ベータ分布の謎に迫る
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
Stanとdlmによる状態空間モデル
Stanとdlmによる状態空間モデルStanとdlmによる状態空間モデル
Stanとdlmによる状態空間モデル
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
 

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