r - 有没有办法调整牛图对象的主题?
问题描述
我可以更改组合情节的主题吗?
例子:
library(ggplot2)
library(cowplot)
p1 = ggplot(diamonds, aes(x = price)) + geom_histogram(bins = 30)
p2 = ggplot(diamonds, aes(x = table)) + geom_histogram(bins = 30)
p = cowplot::plot_grid(p1,p2)
这有效:
p1 + theme_bw()
这不起作用:
p + theme_bw()
解决方案
最简洁的答案是不”。
您在cowplot 中看到的地块已经被渲染为grobs。它们没有您可以更改的主题元素。从理论上讲,您可以“进入”埋在 p 结构中的 grobs 并一次更改单个 grobs,但这很困难、混乱且不可靠。
作为一个展示它有多么棘手的练习,下面是你将如何p
变成一个theme_bw
外观:
p
p$layers <- lapply(p$layers, function(x) {
y <- x$geom_params[[1]][[1]][[6]][[4]][[1]][[4]]
y[[1]][[9]]$fill <- "white"
y[[1]][[9]]$col <- "black"
y[[4]][[7]]$col <- "gray90"
y[[5]][[7]]$col <- "gray90"
y[[2]][[7]]$col <- "gray90"
y[[3]][[7]]$col <- "gray90"
x$geom_params[[1]][[1]][[6]][[4]][[1]][[4]] <- y
x
})
p
推荐阅读
- c# - MediaComposition 中的 MediaClip 数量问题
- html - 如果任何字段为空,如何禁用提交按钮?
- flutter - 重定向回应用程序的 Flutter-OAuth2 问题
- pandas - 使用日期列计算一个字符串出现在另一个字符串之后的唯一 ID 数
- ios - 入侵 .ipa 文件的内容 - 受密码保护的 .zip 文件
- angular - 带有动态过滤器的 Angularfire 集合查询
- javascript - 如何在不使用 PHP 的情况下在链接中使用 api 变量
- android - 输入'列表
' 不是 'Widget 类型的子类型 - python - AWS Lambda - Python中的多处理,通过管道发送()子数据,父在recv()中获取EOFError异常
- django - 在 django 中计算每天的对象访问次数