Chu*_*iao 5 r ggplot2 facet-grid
facet_grid例如,我试图用来布置面板,
library(tidyverse)
library(lubridate)
economics %>%
filter(date >= ymd(19680101)) %>%
mutate(
year = year(date),
month = month(date),
decade = floor(year/10) * 10,
single = year - decade,
decade = paste0(decade, "s")
) %>%
ggplot(aes(month, uempmed)) +
geom_point() +
facet_grid(decade ~ single)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我怎样才能乘坐前 7 个面板(和最后 4 个),让它们完全空白?
我发现通过在gtable绘图之前编辑面板组可以最简单地做到这一点。
首先让我们将 ggplot 对象保存在myplot
myplot <- economics %>%
filter(date >= ymd(19680101)) %>%
mutate(
year = year(date),
month = month(date),
decade = floor(year/10) * 10,
single = year - decade,
decade = paste0(decade, "s")
) %>%
ggplot(aes(month, uempmed)) +
geom_point() +
facet_grid(decade ~ single)
Run Code Online (Sandbox Code Playgroud)
现在我们可以在绘图之前移除面板。我演示了使用cowplot::plot_to_gtable,尽管还有其他几个包提供将 ggplot 转换为 gtable 的功能。
library(cowplot)
library(grid)
gt <- plot_to_gtable(myplot)
to.delete = which (gt$layout$t == 8 & gt$layout$r <= 19 & grepl('panel', gt$layout$name))
to.delete = c(to.delete, which(gt$layout$t == 18 & gt$layout$r >= 17 & grepl('panel', gt$layout$name)))
gt$grobs[to.delete] <- NULL
gt$layout <- gt$layout[-to.delete, ]
grid.newpage()
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud)
我们还可以向上移动空单元格的轴,如下所示:
to.move = which(gt$layout$r >= 17 & grepl('axis-b', gt$layout$name))
gt$layout$t[to.move] <- gt$layout$t[to.move] - 2
gt$layout$b[to.move] <- gt$layout$b[to.move] - 2
grid.newpage()
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |