web-dev-qa-db-ja.com

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

私は両方の関数の_ggplot2_ドキュメントを読んできました。私は、各関数(facet_wrap()facet_grid())を使用する場合の違いは何で、正しい状況になるのだろうかと考えていました。

_library(ggplot2)

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

p + facet_grid(~ cyl)
_

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

59
marbel

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

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)
_

上記は4 * 7 = 28のプロットを表示します。一部が空であっても(class = "midsize"の行には対応するcyl = "5"値がないなど、一部のクラスには対応するシリンダー値がないため)facet_wrap(x ~ y)一方、実際の値を持つプロットのみを表示します。

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

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

41
Abhijeet Sharma

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およびクラスによるハイウェイ走行距離対変位の改善(またはその欠如)を示しています。

21
jlhoward

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

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

facet_grid(.~variable)は、水平に分布するvariableのレベルに等しいファセットを返します。

facet_grid(variable~.)は、垂直に分布するvariableのレベルに等しいファセットを返します。

5