是否可以重复小平面标题(例如,对于整个绘图期间的柱)?
从https://ggplot2.tidyverse.org/reference/facet_grid.html
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p + facet_grid(vars(drv), vars(cyl))
我正在努力实现的是,4、5、6和8在每一行中以方面标题的样式出现.我怎样才能做到这一点呢?
谢谢!
是否可以重复小平面标题(例如,对于整个绘图期间的柱)?
从https://ggplot2.tidyverse.org/reference/facet_grid.html
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p + facet_grid(vars(drv), vars(cyl))
我正在努力实现的是,4、5、6和8在每一行中以方面标题的样式出现.我怎样才能做到这一点呢?
谢谢!
不知道有没有默认选项,但您可以使用patchwork
来获得所需的结果,即为网格的每一行单独绘制一张图,并将它们粘合在一起:
library(ggplot2)
library(patchwork)
mpg |>
transform(cyl = factor(cyl)) |>
split(~drv) |>
purrr::imap(
\(x, y) {
# Remove axis title expect for the middle row
remove_labs_y <- if (y != "f") labs(y = NULL)
# Remove axis expect for the bottom row
remove_axis_x <- if (y != "r") {
theme(
axis.text.x = element_blank(),
axis.title.x = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.length.x = unit(0, "pt")
)
}
p <- ggplot(x, aes(displ, cty)) +
geom_point() +
# Fix limits
scale_y_continuous(limits = range(mpg$cty))
p + facet_grid(vars(drv), vars(cyl), drop = FALSE) +
remove_labs_y +
remove_axis_x
}
) |>
wrap_plots(ncol = 1)