主要目標是精細控制每個facet行的分面ggplot的y-scale。我的策略是爲每一行建立一個單獨的圖並將它們綁定在一起。替換具有多個數據集的現有ggplot的數據集
我想從現有的ggplot對象開始。要爲每個方面行構建一個圖,我計劃對原始數據進行子集化,並使用運算符%+%
替換數據集。 但是,如果在不同層上有多個數據集,這似乎不可能。
是否有可能使用%+%
替換多個/所有 ggplot中的數據集?
MWE以下:此方法適用於繪圖ga
,其中第二個數據集dat2a
不包含構面變量。但它不適用於第二個示例gb
。
library(ggplot2)
dat1 <- data.frame(x=runif(9),y=runif(9), b=rep(1:3,3) )
dat2a <- data.frame(a=c(1,2),c=c(1,1))
dat2b <- data.frame(a=c(0.5,1,2),c=c(0.5,1,1),b=c(1,2,3))
ga <- ggplot(dat1, aes(x,y)) +
geom_point() +
facet_grid(b~.) +
geom_point(data=dat2a, aes(x=a, y=c), color='red')
gb <- ggplot(dat1, aes(x,y)) +
geom_point() +
facet_grid(b~.) +
geom_point(data=dat2b, aes(x=a, y=c), color='red')
# example a) working
ga
#Replot ga using the altered data frame
ga %+% dat1[dat1$b==2,]
# example b) not working
gb
#Replot g using the altered data frame
gb %+% dat1[dat1$b==2,]
什麼是'dat'?你確定你打算在方括號中調用'dat',而不是'dat1',例如。 'gb%+%dat1 [dat1 $ b == 2,]'。 –
確實'dat'應該是'dat1',很好的發現。我用修正編輯了代碼。 (還添加了庫ggplot2)。現在該示例應該正在運行。 – fber