Disable cowplot default for ggplots

2020-07-05 06:17发布

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"))

enter image description here

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?

2条回答
倾城 Initia
2楼-- · 2020-07-05 06:45

Just call theme_set(theme_gray()) beforehand:

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

Plot

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.

查看更多
闹够了就滚
3楼-- · 2020-07-05 06:47

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"))

enter image description here

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

查看更多
登录 后发表回答