labeller関数でこれを行う方法がわかりませんが、別のオプションは、3つのカテゴリ変数をすべてファセットに使用できる単一の変数にまとめるグループ化変数を作成することです。新しいグループ化変数をオンザフライで作成するために、組み込みのmtcars
データフレームとdplyr
パッケージを使用する例があります。それに続くのは、1つから3つのファセット変数の動的選択を可能にする関数による更新です。
library(dplyr)
ggplot(mtcars %>% mutate(group = paste(cyl,am,vs, sep="-")),
aes(wt,mpg)) +
geom_point() +
facet_wrap(~group)
![enter image description here](https://i.stack.imgur.com/yXBn1.png)
UPDATE:柔軟性に関するコメントについて、以下のコードは、ユーザが所望のデータフレームと動的一方の面に選択を含む変数名を入力することを可能にする機能であります2つ、または3つの列。今
library(dplyr)
library(lazyeval)
mygg = function(dat, v1, v2, f1, f2=NA, f3=NA) {
dat = dat %>%
mutate_(group =
if (is.na(f2)) {
f1
} else if (is.na(f3)) {
interp(~paste(f1,f2, sep='-'), f1=as.name(f1), f2=as.name(f2))
} else {
interp(~paste(f1,f2,f3,sep='-'), f1=as.name(f1), f2=as.name(f2), f3=as.name(f3))
})
ggplot(dat, aes_string(v1,v2)) +
geom_point() +
facet_wrap(~group)
}
の機能試してみましょう:
library(vcd) # For Arthitis data frame
mygg(Arthritis, "ID","Age","Sex","Treatment","Improved")
mygg(mtcars, "wt","mpg","cyl","am")
mygg(iris, "Petal.Width","Petal.Length","Species")
![enter image description here](https://i.stack.imgur.com/Q8BXh.png)
ありがとう、これは確かに動作します。しかし、私はggplot2のパラメータを使ってこれを行う方法があるかどうかを調べたいと思います。私は、異なる変数を使用して私のプロットをfacet_wrapしたいかもしれませんし、すでに巨大な私のデータテーブルの冗長性を避けたいでしょう。 – beeprogrammer
更新された回答を参照してください。また、コードはデータフレームオブジェクトに列を追加しません。追加の列は、ggplot関数内でのみ追加され、データフレームオブジェクト自体は変更されません。 – eipi10