Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何更改ggplot2中的默认主题? 背景_R_Ggplot2 - Fatal编程技术网

R 如何更改ggplot2中的默认主题? 背景

R 如何更改ggplot2中的默认主题? 背景,r,ggplot2,R,Ggplot2,我想更改ggplot使用的主题,但我很难理解theme\u update()文档和示例 我正在使用align_plots()将箱线图放置在密度图上,但我发现这些代码都没有导致错误,只留下一个最小的示例。我怀疑该错误是由于使用了theme\u blank()造成的,但我不确定为什么会发生该错误,也不知道如何修复该错误 因此,这里我提供了一个我得到的错误的最小可重复性示例: library(ggExtra) align.plots(qplot(1)) 但在我更新主题后,它会崩溃: newtheme

我想更改ggplot使用的主题,但我很难理解
theme\u update()
文档和示例

我正在使用
align_plots()
将箱线图放置在密度图上,但我发现这些代码都没有导致错误,只留下一个最小的示例。我怀疑该错误是由于使用了
theme\u blank()
造成的,但我不确定为什么会发生该错误,也不知道如何修复该错误

因此,这里我提供了一个我得到的错误的最小可重复性示例:

library(ggExtra)
align.plots(qplot(1))
但在我更新主题后,它会崩溃:

newtheme <- theme_update(axis.text.y = theme_blank(),
                         axis.line = theme_blank(),
                         axis.title.x = theme_blank(), 
                         axis.title.y = theme_blank(),
                         axis.ticks.x = theme_blank(),
                         panel.grid.major = theme_blank(),
                         panel.grid.minor = theme_blank(),
                         panel.border = theme_blank(),
                         axis.color.y = 'white')
align.plots(qplot(1))
问题:
  • 是什么导致了这个错误

  • 在哪里可以获得有关使用
    ?主题更新()的更多信息?我在ggplot文档中了解到了这一点,但最终还是找不到答案,尽管我得到的最接近的是脚本

  • 注: 基于另一个问题的解决方案,我得到了相同的错误

    opt <- opts(...)
    align.plots(qplot(1) + opt)
    

    opt我不知道为什么会这样,但确实如此。只需在调用align.plots之前插入一行
    theme\u set(newtheme)

    这可能被认为是ggExtra::align.plots()中的一个错误。此函数用于计算ggplot的不同元素(如y轴标签和图例)的大小,并相应地对齐绘图,使绘图面板彼此重叠。如果将主题设置为对其中一些图形元素使用theme_blank(),则函数会混淆,因为底层的grob(ggplot2::.zeroGrob)与其他grob不同

    虽然它可能是可修复的(*),但我认为您最好考虑其他选项:

    • 使用虚拟镶嵌面变量使ggplot2自动对齐两个面板

    • 使用gridExtra::grid.arrange()或普通栅格视口使两个绘图相互重叠;由于删除了可能会偏移打印位置的图元,因此应该没有问题

    (*):现在已修复,请尝试

       source("http://ggextra.googlecode.com/svn/trunk/R/align.r")
    

    谢谢我以前试过这个;它制作了一个绘图,但是绘图是默认的
    主题灰()
    而不是
    新主题中的
    主题空白()
    选项,谢谢!不知怎的,它被改变了,我可以像这样恢复它
    theme\u集(theme\u grey())
    嘿,巴蒂斯特!新的align.r似乎位于密码墙后面。有什么建议吗?此软件包已弃用;我建议你用
       source("http://ggextra.googlecode.com/svn/trunk/R/align.r")