禁用ggplots的cowplot默认值

Posted

技术标签:

【中文标题】禁用ggplots的cowplot默认值【英文标题】:Disable cowplot default for ggplots 【发布时间】:2016-01-31 00:19:19 【问题描述】:

ggplot2 附加包cowplot 有一个很好的绘制多个绘图的函数,称为plot_grid()。这是plot_grid() 在行动:

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

但请注意加载 cowplot 如何更改绘图的默认样式。如何加载cowplot 包,以便我可以使用plot_grid() 函数,同时禁用cowplot 强制执行的默认绘图样式?

【问题讨论】:

你能不加载cowplot然后只使用cowplot::plot_grid()吗? 不——只要你打电话给library(cowplot),ggplot 的行为就会改变。 从 1.0 版开始,cowplot 不再设置默认主题。 wilkelab.org/cowplot/articles/introduction.html 【参考方案1】:

如 cmets 中所述,一旦您安装了 cowplot 包,您就可以使用 :: 运算符加载 plot_grid() 函数(请参阅 What are the double colons (::) in R?),并且 cowplot 不会更改任何 ggplot2 默认值.

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

当您使用library()require() 加载整个cowplot 包时会出现问题。

【讨论】:

很好 ?,这救了我的培根。这是一个比公认的更好的答案,因为它避免了完全覆盖默认值的问题,而不是试图覆盖覆盖......【参考方案2】:

只需提前致电theme_set(theme_gray())

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

然后,如果您想疯狂地使用主题,您可以安装 ggthemes 并简单地将 theme_gray() 替换为您选择的任何主题,或者滚动您自己的主题。另请参阅 this vignette 了解单个元素的样式。

【讨论】:

以上是关于禁用ggplots的cowplot默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何将普通的ggplot与cowplot中的多面对齐?

禁用实体框架的默认值生成(代码优先)

ggplot2 vs cowplot,FUN 中的错误(“text”[[1L]],...):

将刻面ggplots(facet_wrap)与R中的cowplot对齐

Xcode 6 为布局边距设置默认值或禁用它们

如果用户从浏览器返回时具有值,如何启用默认禁用的输入