【发布时间】:2017-05-15 19:36:46
【问题描述】:
主要目标是精细控制每个刻面行的刻面 ggplot 的 y 尺度。我的策略是为每一行构建一个单独的图并将它们绑定在一起。
我想从现有的 ggplot 对象开始。为了为每个构面行构建一个图,我计划对原始数据进行子集化,并使用运算符%+% 替换数据集。
但是,当不同层上有多个数据集时,这似乎是不可能的。
是否有可能使用%+% 替换多个/所有 ggplot 中的数据集?
MWE 下面:此方法适用于 plot ga,其中第二个数据集 dat2a 不包含 facetting 变量。但是它不适用于第二个示例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)。现在该示例应该正在运行。