2012-09-04 9 views
8

ggplotオブジェクトの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オブジェクトを与えてきたと私がしたい場合は、たとえば、このような変換を使用しないことが望ましいですアドホックファセッティングを追加します。

答えて

3

これは私には馴染みがありますが、私はそれを修正することはできませんでした。ファセット変数の扱いは、美学的変数の処理よりも強力ではないと思います。

ルート要件のアドレッシング - 既存のggplotをアドホック・ファセットにする。例えば

myplot %+% transform(myplot$data, z=z%%2) 
+1

'myplot $のデータ$ ZZ < - - 既存R ggplotの卸売(マスター)データセットを置き換えることができることに注意してくださいmyplotの$のデータ$ zを%% 2'にもより簡単かもしれません。 –

+0

@Josh、trueですが、すでにインストールされているデータセットに依存します。時にはデータなしでggplotsを構築し、複数のデータセットを適用することがあります。 –

+0

これは、私が使っている解決策によく似ています - 'myplot $ data < - transform(myplot $ data、z = z %% 2)'。いくつかの他のパッケージが同じ演算子を定義しているので、私は名前空間を '%+%'で数回焼いてしまいました。それを理解するために*時間*をかけました。 –

関連する問題