9

オブジェクトのdata要素内のデータの関数によってファセットする方法がわかりません。ggplot次のおもちゃの例では、私がやりたいことは次のようなものです:

df <- data.frame(x=1:8, y=runif(8), z=8:1)
ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap( ~ (z %% 2))

しかし、それはエラーを出します: Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting.

データ フレームを変換することで、目的の結果を得ることができます。

ggplot(transform(df, z=z%%2), aes(x=x, y=y)) + geom_point() + facet_wrap( ~ z)

しかし、そのような変換を使用しない方が望ましい場合がよくあります。たとえば、既にオブジェクトを与えられていて、そのggplotオブジェクトにアドホックなファセットを追加したい場合などです。

4

1 に答える 1

3

これは私にはおなじみのように聞こえますが、私はそれを修正することができませんでした.ファセット変数の処理は、審美的な変数の処理よりも強力ではないと思います.

根本的な要件への対処 - 既存の ggplot をアドホックにファセットする。Rたとえば、既存の ggplotの (マスター) データセットを卸売りに置き換えることができることに注意してください。

myplot %+% transform(myplot$data, z=z%%2)
于 2012-09-04T22:01:00.573 に答える