我想背後有我的數據的多個矩形,但我也想用多個方面,每一個它的這些矩形會出現在我第一次運行下面的代碼,並得到了錯誤: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
載體項目的數量,它的工作。我得出結論,我必須乘以fill
向量除以圖的面數(例如,如果我將fs
更改爲c("x","y","z")
,則需要將fill
列的倍數乘以3)。
這是怎麼回事?這是代碼中的錯誤嗎?如果沒有,我應該如何編寫我的代碼,以便可以使用任意數量的方面?我不想明確地編寫geom_rect
中的哪些變量。
如果您還有其他geoms使用不同的填充,但是如何使用scale_fill_identity()? – Zeke
你只能有一個'fill'變量映射,所以如果你已經對不同的變量使用了'fill',這種方法將不起作用。如果您必須寫出填充設置,則可以始終在矢量上使用「rep」,並使用faceting變量中的唯一值數作爲重複次數。 – aosmith