読者です 読者をやめる 読者になる 読者になる

Rを通じて統計学を学ぶ備忘録ブログ

SPSSからRに移行したい私のような人向けのR解説ブログ兼学習用備忘録。

第79回 ggplot備忘録その9

ggplot2

今回は、ggplotのファセット(faset)を見ていきます。データを視覚化するときに、これでもいいんだけど、もう少し上手くグループでまとめられないか・・・という時に役立つオプションです。つまり、ファセットを使うことで、サブグループ毎に視覚化することができます。

ファセット

データの部分集合をサブグループとして視覚化してみます。イメージとしては、ベースの散布図が一枚あって、ある条件のもとに散布図をたくさん作っていくという感じです。

data <- read.csv("dat0807.csv", header = TRUE)

#変数data.x, data.yでベースになる散布図を作る
p <- ggplot(data, aes(x = data.x, y = data.y)) + geom_point()

#変数groupで行分割
p + facet_grid(group ~.)

f:id:teruaki-sugiura:20160807155135p:plain

 一枚のベースになる散布図を、変数"group"で三枚に分割しました。これは変数"group"が3つの値(g001, g002, g003)で構成されているためです。各値での変数x,yの関係が一覧で確認できます。

#変数groupで列分割
p + facet_grid(. ~ group)

f:id:teruaki-sugiura:20160807155150p:plain

#変数data.x, data.yをもとに、変数group, classで行列分割。
#変数data.x, data.yに個別の範囲を持たせる。
p + facet_grid(group ~ class, scales = "free")

f:id:teruaki-sugiura:20160807155159p:plain

さらに細かく分割するとこんな感じ。4つの変数が一覧で確認できるのは助かります。 facet_wrapを使うと、列数などを指定することができます。

#変数data.x, data.yをもとに、classで3行に分割
p + facet_wrap(~ class, nrow = 3)
#変数data.x, data.yをもとに、classで2列に分割
p + facet_wrap(~ class, ncol = 2)
どちらでも同じものが出来上がります。

f:id:teruaki-sugiura:20160807155207p:plain

基本的なファセットの使い方はこんな感じです。変数のラベルを変更する場合は、基本的なグラフィックスパッケージにように、代わりのラベルを指定して、ラベルを変更するということができなようです。そのため、変数の値の名前を変更する必要があります。

#変数groupの"g001"を"group001"にラベル変更。その他も同様 
data2 <- data 
levels(data2$group)[levels(data2$group)=="g001"] <- "group001" 
levels(data2$group)[levels(data2$group)=="g002"] <- "group002" 
levels(data2$group)[levels(data2$group)=="g003"] <- "group003" 

#変数data.x, data.yでベースになる散布図を作る 
p <- ggplot(data2, aes(x = data.x, y = data.y)) + geom_point()

#変数groupで列分割。各列に名前をわり当てる場合はlabeller = label_bothを追加。 
p + facet_grid(. ~ group)

f:id:teruaki-sugiura:20160807161621p:plain

変数"group"の"g001"が"group001"に変更されていることが確認できます。labeller = label_bothを追加すれば、group001の前にgroupという名前を追加できます。つまり、group:group001という感じです。

おまけ

相関行列を視覚化する場合、いろんな方法がありますが、ここでは色を使って、相関係数の高低を見る場合の方法を記述しておきます。備忘録。

data3 <- data.frame(data2$data.x, data2$data.y, data2$data.xx, data2$data.yy)
matrix.cor <- round(cor(data3), digits = 3)
corrplot(matrix.cor) #少し調整。method = "shade"で全面塗り、tl.col = "black"で文字を黒く、tl.srt = 90でテキストの角度調整。 corrplot(matrix.cor, method = "shade", shade.col = NA, tl.col = "black", tl.srt = 90)

f:id:teruaki-sugiura:20160807161628p:plain

#さらに調整。addCoef.col = "black"で文字をグレー、cl.pos ="n"で、右側凡例を消す、order="AOE"で固有ベクトルの角度順に並び替え。
corrplot(matrix.cor, method = "shade", shade.col = NA, tl.col = "black", tl.srt = 90, addCoef.col = "grey", cl.pos ="n", order = "AOE")

f:id:teruaki-sugiura:20160807161631p:plain

 

広告を非表示にする