私が最初に以下のコードを実行し、エラーを得たこれらの矩形はで表示されますそのうち一人一人、私は私のデータの後ろに複数の四角形を持つようにしたいが、私はまた、複数のファセットを使用したい:。Aesthetics must be either length 1 or the same as the data (12): fill
幾何学的にファセットの数で幾何学を掛けなければなりませんか?
ここに私のコードです:
block_rects <- data.frame(xstart_rect=c(-0.5, 0.5, 1.5, 2.5, 3.5, 4.5),
xend_rect=c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5))
df <- data.frame(xs=c(1,2,3),ys=c(1,2,3),cond=c("a","b","f"),fs=c("x","x","y"))
df %>% ggplot(aes(x=xs,y=ys,color=cond)) +
geom_rect(inherit.aes = FALSE,
data = block_rects, aes(xmin = xstart_rect, xmax = xend_rect,
ymin = -Inf, ymax = Inf),
fill = c("#f1f1f1", "white","white","white","#f1f1f1","white")) +
geom_point() +
facet_wrap(~ fs)
しかし、私は私がgeom_rect
にfill
ベクター内のアイテム数を倍増したときに、それが働いていたことに気づきました。私は、ベクトルに、プロットのファセットの数を掛けなければならないことを実証しました(例えば、fs
をc("x","y","z")
に変更する場合は、fill
の列を3倍にする必要があります)。
この動作で何が起きていますか?これはコードのバグですか?そうでない場合は、任意の数のファセットを使用できるようにコードを作成する必要がありますか? geom_rect
でどの変数がファセットされているかを明示的にコード化する必要はありません。
異なる塗りつぶしを使用していた他の幾何学があった場合、scale_fill_identity()はどのように使用しますか? – Zeke
あなたは一つの 'fill'変数をマップすることしかできませんので、すでに異なる変数に対して' fill'を使用していた場合、このアプローチはうまくいきません。塗りつぶし設定を書き出す必要がある場合は、ファセット変数の一意の値の数を繰り返す回数として、常にベクトルに 'rep'を使用することができます。 – aosmith