Disable cowplot default for ggplots

2020-07-05 06:55发布

问题:

The ggplot2 add-on package, cowplot, has a nice function for plotting multiple plots called plot_grid(). Here's plot_grid() in action:

library(ggplot2); library(cowplot)

plot_a <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
plot_b <- ggplot(mtcars, aes(mpg, disp)) + geom_point()

plot_grid(plot_a, plot_b, labels = c("A", "B"))

But note how loading cowplot changes the default style of plots. How can I load the cowplot package so that I can use the plot_grid() function but also disable the default plot styles that cowplot enforces?

回答1:

Just call theme_set(theme_gray()) beforehand:

theme_set(theme_gray())
plot_grid(plot_a, plot_b, labels = c("A", "B"))

Then, if you want to go crazy with themes, you could install ggthemes and simply replace theme_gray() with any theme you choose, or roll your own. Also see this vignette for styling individual elements.



回答2:

As mentioned in the comments, once you've installed the cowplot package you can load the plot_grid() function with the :: operator (see What are the double colons (::) in R?) and cowplot won't change any ggplot2 defaults.

> plot_a <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
> plot_b <- ggplot(mtcars, aes(mpg, disp)) + geom_point()
> plot_grid(plot_a, plot_b, labels = c("A", "B"))
Error in plot_grid(plot_a, plot_b, labels = c("A", "B")) : 
  could not find function "plot_grid"

> cowplot::plot_grid(plot_a, plot_b, labels = c("A", "B"))

The issue comes when you load the entire cowplot package with library() or require().