我尝试使用facet_grid() 显示三个时间序列,为了节省空间,我减少了它们之间的面板间距。问题是它们的垂直轴重叠,所以我想仅在中间的图上将其移动到右侧。
由于这在 ggplot2 中似乎不可能,所以我想做的是渲染每个轴,然后通过编辑 gtable 将其删除,但到目前为止我还没有成功。
这是一个最小的例子:
library(ggplot2)
set.seed(123)
df <- data.frame(expand.grid(x = 1:150, type = letters[1:3]))
df$y <- df$x*0.016 + rnorm(150, sd = .5)
ggplot(df, aes(x, y)) + geom_line() +
facet_grid(type~.) +
theme(panel.spacing.y = unit(-3, "lines"), strip.text = element_blank()) +
scale_y_continuous(sec.axis = dup_axis(name = ""), name = "y")
Run Code Online (Sandbox Code Playgroud)
产生这个:

我想删除每个轴文本以达到此目的:

谢谢!
解决方案是将 nullGrob() 分配给 gTable 的相关元素。
gt <- ggplotGrob(g)
t <- gt[["grobs"]][[8]][["children"]][[2]]
# Found those grobs by looking around the table.
gt[["grobs"]][[8]][["children"]][[2]] <- nullGrob()
gt[["grobs"]][[10]][["children"]][[2]] <- nullGrob()
gt[["grobs"]][[12]][["children"]][[2]] <- nullGrob()
grid.newpage()
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |