potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

R&ggplot2 qqplotrのプロットをpurrrで結合してpatchworkで表示する

qqplotrのプロットをpurrrで結合してpatchworkで表示するコードです。要は次の図を関数主体で作成するコードです。

コード

library(purrr)
library(ggplot2)
library(patchwork)
library(qqplotr)

colnames(iris)
#>"Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     

map(c("Sepal.Length","Sepal.Width","Petal.Length"), function(colname) {
  g <- ggplot(iris, aes(sample=!!sym(colname))) +
    theme_classic() +
    ggtitle(colname) +
    stat_qq_band() +
    stat_qq_line() +
    stat_qq_point(alpha=0.2)
  return(g)
}) %>% reduce(`|`)

コードの説明

qqplotrパッケージとqqplotr::stat_qq_*関数

ggplot2にQQプロットの機能を追加してくれるパッケージとその関数です。ggplot2だけでもstat_qqstat_qq_lineで点と線を描画できますが、qqplotrを追加すると信頼区間も描画できます。

ggplot(data, aes(...=!!sym(変数)))

ggplot関数に指定するaesで列名を変数で指定したい場合はaes(...=!!sym(変数))と指定します。!!sym(変数名)を使わずにaes(...=変数)とすると変数は列名と解釈されることに注意します。たとえばaes(...=s)は変数sの内容ではなく列sを指します。

|

Rの演算子は「`」(鋭アクセント)で囲むことで関数として扱えます。たとえば1 + 2`+`(1, 2)は同じです。