ggplot2のfacet_wrap()とfacet_grid()の違いは何ですか?


80

私はggplot2両方の機能のドキュメントを読んでいます。それぞれの関数(facet_wrap()facet_grid())を使用する上で、どのような違いがあり、どのような状況が正しいのか疑問に思いました。

library(ggplot2)

p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)

p + facet_grid(~ cyl)

この小さな例を出発点として提供します。違いは、ラップによってプロットがより自律的になり、グリッドによって1つのプロットがすべて一緒になることです。

回答:


60

以下の答えは、facet_grid()またはに2つの引数がある場合を示していますfacet_wrap()

facet_grid(x ~ y)x*y一部のプロットが空の場合でも、プロットが表示されます。例:

library(ggplot2)
g <- ggplot(mpg, aes(displ, hwy))

4つの異なるcylと7つの異なるクラス値があります。

g + geom_point(alpha=1/3) + facet_grid(cyl~class)

(いくつかのクラスがシリンダの対応する値がないため、クラス=「中型」の行は、任意の対応するCYL =「5」の値はありませんように)いくつかは空であっても上記ディスプレイ4×7 = 28のプロット、 facet_wrap(x ~ y)他方を手は、実際の値を持つプロットのみを表示します。

g + geom_point(alpha=1/3) + facet_wrap(cyl~class)

現在、19のプロットが表示されており、cylとclassの組み合わせごとに1つです。


25

facet_wrap(...)ggplots単一の変数に基づいて、異なるフレーム(ファセット)に文字列をまとめます。facet_grid(...)2つの変数を取ることができます:

p + facet_grid(cyl~class)

3番目の変数を使用して、各ファセットでグループ化することもできます。

qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)

は、#cylindersおよびクラスによるハイウェイマイレージと排気量の改善(またはその欠如)を示しています。


11
facet_wrap2つの変数を取ることもできます。
マーベル2016年

9

単一変数プロットの場合、facet_grid()またはのいずれかを使用できますfacet_wrap()

facet_wrap(~variable)のレベル数のプロットの対称行列を返しますvariable

facet_grid(.~variable)variable水平方向に分散されたレベルに等しいファセットを返します。

facet_grid(variable~.)variable垂直方向に分散されたレベルに等しいファセットを返します。


1
なぜそうなのか、そうでfacet_wrap(~variable)ないのfacet_wrap(variable~)か知っていますか?
amsquareb

9

主にggplot2の本から引用しています。148f。

ファセットには次の3つのタイプがあります。

  • facet_null() :単一のプロット、デフォルト。
  • facet_wrap() :パネルの1Dリボンを2Dに「ラップ」します。
  • facet_grid() :行と列を形成する変数によって定義されたパネルの2Dグリッドを生成します。

ここに画像の説明を入力してください

ファセットラップ

facet_wrap()パネルの長いリボン(任意の数の変数によって生成される)を作成し、それを2Dにラップします。これは、多くのレベルを持つ単一の変数があり、よりスペース効率の良い方法でプロットを配置したい場合に役立ちます。

あなたはリボンが持つグリッドに包まれる方法を制御することができncolnrowas.tabledir。列と行の数ncolnrow制御します(1つだけ設定する必要があります)。as.tableファセットをテーブル(TRUE)のようにレイアウトして右下に最大値を表示するか、プロット(FALSE)に最大値を右上に配置するかを制御します。dirコントロールラップの方向: 時間orizo​​ntalまたはVのertical。

ファセットグリッド

From ?facet_gridfacet_grid()行および列のファセット変数によって定義されたパネルのマトリックスを形成します。これは、2つの離散変数があり、変数のすべての組み合わせがデータに存在する場合に最も役立ちます。

行または列で複数の変数を「追加」することにより、それらを使用できますa + b ~ c + d

facet grid()と呼ばれる追加のパラメータspaceがあり、scales。と同じ値を取ります。

# If scales and space are free, then the mapping between position
# and values in the data will be the same across all panels. This
# is particularly useful for categorical axes
ggplot(subset(mpg, manufacturer %in% c("audi", "honda", "toyota")) , aes(drv, model)) +
    geom_point() +
    facet_grid(manufacturer ~ ., scales = "free", space = "free") +
    theme(strip.text.y = element_text(angle = 0))

ここに画像の説明を入力してください

(簡略化)からの例 ?facet_grid

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.