撒科打诨
这是一种方法cowplot::plot_grid。该plot_duo函数使用tidyeval方法ggplot2 v3.0.0# install.packages("ggplot2", dependencies = TRUE)library(rlang)library(dplyr)library(ggplot2)library(cowplot)plot_duo <- function(df, plot_var_x, plot_var_y) { if (is.character(plot_var_x)) { print('character column names supplied, use ensym()') plot_var_x <- ensym(plot_var_x) } else { print('bare column names supplied, use enquo()') plot_var_x <- enquo(plot_var_x) } if (is.character(plot_var_y)) { plot_var_y <- ensym(plot_var_y) } else { plot_var_y <- enquo(plot_var_y) } pts_plt <- ggplot(df, aes(x = !! plot_var_x, y = !! plot_var_y)) + geom_point(size = 4) his_plt <- ggplot(df, aes(x = !! plot_var_x)) + geom_histogram() duo_plot <- plot_grid(pts_plt, his_plt, ncol = 2)}### use character column namesplot_vars1 <- c("wt", "disp", "wt")plt1 <- plot_vars1 %>% purrr::map(., ~ plot_duo(mtcars, .x, "mpg"))#> [1] "character column names supplied, use ensym()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.#> [1] "character column names supplied, use ensym()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.#> [1] "character column names supplied, use ensym()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.plot_grid(plotlist = plt1, nrow = 3)### use bare column namesplot_vars2 <- alist(wt, disp, wt)plt2 <- plot_vars2 %>% purrr::map(., ~ plot_duo(mtcars, .x, "mpg"))#> [1] "bare column names supplied, use enquo()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.#> [1] "bare column names supplied, use enquo()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.#> [1] "bare column names supplied, use enquo()"#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.plot_grid(plotlist = plt2, nrow = 3)要将图分成多个页面,我们可以使用gridExtra :: marrangeGrobml1 <- marrangeGrob(plt, nrow = 2, ncol = 1)# Interactive useml1 # Non-interactive use, multipage pdfggsave("multipage.pdf", ml1)