ggpairs()は、GGallyパッケージに入っているやつです。
公式サイトは以下
Extension to ggplot2 • GGally
ggpairsは、こんな感じでggplotで作った図をいくつか配置できます。
うーん。美しい。
この記事は、ggpairsの再学習コストを亡き者にするための覚書なので、「それ違うよ!」って方は優しくご教授いただくか、心に留めておいてください。ガラスのハートなので。
目次
学習がめんどくさい…という方のためのテンプレート
「ggpairs()の学習がめんどくさいので、パラメータだけいい感じに指定できたらいい感じの図ができてて欲しい。」という方(未来の自分も含む)に向けて、僕が試行錯誤していい感じになったコードを紹介します。関数化する前提で作ったのでグラフ名等は少なめですが、まあ役に立つんじゃないかなと。よろしければどうぞ。
何もかも初めての人は、このテンプレートを実行する前に、
install.packages("ggplot2")
install.packages("GGally")
を忘れずに。では、テンプレートです。
# ライブラリーの読み込み
library(ggplot2)
library(GGally)
data(tips, package = "reshape") #試験用データセット
# glimpse(tips)
res.data = tips # 可視化するデータ元
var.data = c("sex","total_bill","tip","smoker") # 可視化する列名選択
var.name = c("性別", "合計","チップ","喫煙") # 可視化するラベルの名前を指定
color.factor = interaction(res.data$sex,res.data$smoker) #色の基準(交互作用想定)
# color.factor = res.data$sex #色の基準(1要因を想定)
# バイオリンプロットの関数化
my_violin = function(data, mapping) {
ggplot(data = data, mapping = mapping)+
geom_violin(trim = T,fill = "#999999",
alpha = .3)+
# geom_hline(yintercept = 1) +
theme(legend.position = "none") +
geom_boxplot(width = .8 ,fill = "white",alpha = .1)
}
# 描画
ggpairs(data = res.data,
columns = var.data,
columnLabels = var.name,
mapping = aes(color = color.factor),
upper = list(continuous = "cor",
combo = my_violin,
discreate = "blank"),
diag = list(continuous = wrap("densityDiag",
alpha = .5)),
lower = list(continuous = wrap("smooth",
se = FALSE,
size = .1),
combo = wrap("facethist",
alpha = .6),
discreate = "facetbar")
)
めんどくがりやの方々はお疲れ様でした。
もうちょっとちゃんと解説してほしい?仕方ない
ということで、基本の書き方から中身のコードの解説をざっとしていきます。
ggpairs()の基本の書き方
基本の書き方はこんな感じ
library(ggplot2)
library(GGally)
data(tips, package = "reshape") #試験用データセット
ggpairs(data = tips,
columns = c("sex","total_bill","tip","smoker"),
columnsLabels = c("性別", "合計","チップ","喫煙"),
mapping = aes(color = sex),
upper = list(continuous = "smooth"),
lower = list(combo = "facetdensity"),
diag = list(continuous = "barDiag"))
各変数の説明(ggpairs編)
- data
- プロットするのに必要なデータを格納したdata.frame
- columns
- dataのうち、表示したいやつだけ指定する
- ファクト型だから色分けしたいけど、グラフには含めたくない…というときにぜひ
- columnLabels
- 表示するときのラベルの名前
- dataの列名が長かったり日本語にしたいとき活躍
- mapping
- カラーの指定とか、fillの指定とか色々できる
- ggpairs内に書くと、全体に反映される
- upper
- 右上の三角部分の表示設定
- diag
- 対角線上の表示設定
- lower
- 左下の表示設定
各変数の説明(ggpairsの中身編)
中身ってのは例えば
upper = list(continuous = "smooth")
のうちの、listの中身のことです。以下解説
- continuous
- グラフの種類を指定するやつ。
- 連続値 X 連続値のときにどんな種類のグラフを表示させるか
- 種類の指定は色々あるので後述
- combo
- 基本は continuous と同様
- ただし、離散値 X 連続値のときにどんな種類のグラフを表示させるか
- discreate
- 基本は上記2つと同じ
- ただし、これは離散値 X 離散値のときにどんな種類のグラフを表示させるか
どの種類のデータ型の組み合わせで、どの種類のグラフを指定できるのかは、こちらを参照してください。以下は引用
指定できるグラフ
continuous(連続量×連続量)
’points’=散布図
’smooth’=散布図+平滑化線
’smooth_loess’=散布図+平滑化線+信頼区間
’density’=等高線
’cor’=相関係数
’blank’=表示しないcombo(連続量×離散量)
’box’=箱ひげ図
’box_no_facet’=ファセットしない箱ひげ図
’dot’=ドット
’dot_no_facet’=ファセットしないドット
’facethist’=ヒストグラム
’facetdensity’=密度図
’denstrip’=帯状密度図
’blank’=表示しないdiscrete(離散量)
’facetbar’=棒グラフ
’ratio’=よくわからない
’blank’=標示しない
引用元の記事はとてもわかり易く、詳しいので、ぜひ参照してください。
なお、メソッドとグラフイメージの対応は、こちらの記事が大変丁寧なので、作図の際はご参考にされるとよろしいかと。
各変数の説明(wrap編)
ちなみに、先程紹介した記事によると、こいつらにwrap関数を使って指定してやると、透明度とか指定できるらしいです。以下、サンプルコード
var_names = c("年齢", "赦し期待", "誠意期待")
sin.pltdata %>%
ggpairs(columns = c("age","for.mean","sin.mean"),
columnLabels = var_names,
mapping = aes(color = intence),
lower = list(continuous = wrap("smooth",se = FALSE, size = .5),
combo = "facethist"),
diag = list(continuous = wrap("densityDiag",alpha = 0.5)),
upper = list(continuous = "cor",
combo = "box")
)
wrap()の中身はおなじみですが、一応解説
- se
- 論理値で指定
- TRUEで信頼区間が表示される
- size
- その名の通り、出力するサイズの指定
- 文字サイズとか、点の大きさとか
- alpha
- 透明度のこと
- densityDiagとかこれを指定するといい感じになる
その他いっぱいありますけども、とりあえずはこんな感じで良いのではないでしょうか。
参考サイト
きれいにバイオリンプロットを書くためにお世話になりました
ggplot2でviolinplotを描く - sugioka_R
自作関数の組み込み方や、グラフのイメージなどとても参考にさせていただきました
【R】ggpairs()あれこれ
めちゃくちゃ写経させて頂いたサイト様
GGallyパッケージのggpair関数を使いこなすための覚え書き : 厚沢部文化財日誌
パッケージの父
ggpairs(): Pairwise plot matrix • GGally