主要目标是精细控制每个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