R 修改组合图的y轴

R 修改组合图的y轴,r,ggplot2,R,Ggplot2,我正在尝试修改ggplot2 wiki中给出的示例的y轴限制 library(ggplot2) x <- seq(1992, 2002, by=2) d1 <- data.frame(x=x, y=rnorm(length(x))) xy <- expand.grid(x=x, y=x) d2 <- data.frame(x=xy$x, y=xy$y, z= jitter(xy$x + xy$y)) d1$panel <- "a" d2$panel <-

我正在尝试修改ggplot2 wiki中给出的示例的y轴限制

library(ggplot2)
x <- seq(1992, 2002, by=2)

d1 <- data.frame(x=x, y=rnorm(length(x)))
xy <- expand.grid(x=x, y=x)
d2 <- data.frame(x=xy$x, y=xy$y, z= jitter(xy$x + xy$y))

d1$panel <- "a"
d2$panel <- "b"
d1$z <- d1$x

d <- rbind(d1, d2)

p <- ggplot(data = d, mapping = aes(x = x, y = y))
p <- p + facet_grid(panel~., scale="free")
p <- p + layer(data= d1,  geom = c( "line"), stat = "identity")
p <- p + layer(data=d2, mapping=aes(colour=z, fill=z),  geom =
c("tile"), stat = "identity")
p
库(ggplot2)

尽管有警告,但可以在不修改数据的情况下进行

在面板“a”的所需y值处添加一个NA颜色的几何图形(此处,
geom_hline
)(也就是说,确保将
geom_hline
的数据框设置为d1)。但是我认为
grid.arrange
选项会更整洁

library(ggplot2)
x <- seq(1992, 2002, by=2)
set.seed(17)
d1 <- data.frame(x=x, y=rnorm(length(x)))
xy <- expand.grid(x=x, y=x)
d2 <- data.frame(x=xy$x, y=xy$y, z= jitter(xy$x + xy$y))
d1$panel <- "a"
d2$panel <- "b"
d1$z <- d1$x
d <- rbind(d1, d2)

p <- ggplot(data = d, mapping = aes(x = x, y = y))
p <- p + facet_grid(panel~., scale="free")
p <- p + layer(data= d1,  geom = c( "line"), position = "identity", stat = "identity") + 
   geom_hline(data = d1, aes(yintercept = 1.5), colour = NA)

p <- p + layer(data=d2, mapping=aes(colour=z, fill=z),  geom =c("tile"), position = "identity", stat = "identity")
p <- p + scale_y_continuous(breaks = c(seq(-1.5, 1.5, .5), seq(1992, 2002, 2))) +
   scale_x_continuous(breaks = seq(1992, 2002, 2))
库(ggplot2)

当你在每个方面都有相同类型的绘图(基于塔夫特的小倍数思想)时,x面绘制是很好的。当您组合不同类型的绘图时,最好使用
arrange.grid
,以便您可以单独自定义它们。这似乎不可能-请参阅此线程。一种方法是在数据中插入1.5的值,并进行标记,以便geom_line()不会捕捉到它。我的意思是,使用其他几何图形将颜色设置为NA来映射它。这应该可以做到,但它涉及到手动操作您正在对两组不同的数据进行切面处理,而
facet\u wrap/grid
并不是为这两组数据而设计的。我建议您采纳@shujaa关于
grid的建议。从
gridExtra
包中安排
。这里引用了@shujaa链接中@hadley的一句话,说明了为什么在ggplot2中不可能做到这一点:“你应该用底层数据来描述事情,而不是用任意的面板编号。”感谢你给出了这个有趣的答案。这肯定会有帮助。