Ответ 1
Поскольку последняя версия ggplot2
использует gtable
внутренне, вы можете легко справиться с такой задачей:
d = data.frame(x=rnorm(100),group=c("A","B"))
d$y = d$x+rnorm(100,0,0.5)
d[d$group=="B","x"]=d[d$group=="B","x"]/100
d[d$group=="B","y"]=d[d$group=="B","y"]/60
# create plots for each level of group
p <- lapply(levels(d$group),
function(i) {
dat <- subset(d, group == i)
lim <- range(c(dat$x, dat$y))
ggplot_gtable(ggplot_build(qplot(x,y,data=dat,asp=1) +
facet_wrap(~group,scale="free") +
coord_equal() +
xlim(lim) + ylim(lim)))
})
# tweaking margins
p[[1]] <- p[[1]][, -6]
p[[2]] <- p[[2]][, -(1:2)]
# draw it
grid.newpage()
grid.draw(cbind(p[[1]], p[[2]], size = "first"))