首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Seurat,干扰ggplot2 2/平稳输出

Seurat,干扰ggplot2 2/平稳输出
EN

Stack Overflow用户
提问于 2017-07-25 19:11:15
回答 1查看 535关注 0票数 2

我正在Rstudio中编写一个R脚本,查看单个单元格数据并生成各种图表。我使用的包是ggplot2。当未加载Seurat库时,它会生成像这样的好图输出:

然后,当导入Seurat库时,图形会恢复到这种丑陋状态:

以下是Seurat所带来的进口产品清单:

代码语言:javascript
运行
复制
Imports: methods, ROCR, stringr, mixtools, lars, fastICA, tsne, Rtsne,
        fpc, ape, VGAM, pbapply, igraph, FNN, caret, plyr, dplyr,
        RColorBrewer, MASS, Matrix, irlba, reshape2, gridExtra, gplots,
        gdata, Rcpp, RcppEigen, RcppProgress, tclust, ranger

对于如何在不改变图形输出的情况下同时出现两个库,有什么想法吗?

已尝试的解决办法:

  • 尝试过的"detach("package:Seurat",unload = TRUE)“//在关闭和重新加载RStudio时没有恢复绘图,也不允许上游代码块提供ggplot2正常图形。
EN

回答 1

Stack Overflow用户

发布于 2019-11-30 03:19:46

一条评论要求我张贴我的修复作为一个回答,所以我做了一个小调查。当在调用library(package)之后发生意外行为时,这是因为该包有一个名为.onLoad.onAttach的函数。这些操作在加载或附加包时自动运行,通常用于设置选项、打印有用的消息等。最佳实践表明,您应该撤消任何带有补足函数.onUnload的操作。请参阅:https://r-pkgs.org/r.html#when-you-do-need-side-effects

有时候,包裹确实需要副作用。这是最常见的,如果您的包与外部系统交谈-您可能需要做一些初步设置时,包加载。..。如果使用.onLoad(),可以考虑使用.onUnload()来清除任何副作用。按照惯例,.onLoad()和朋友通常保存在一个名为zzz.R的文件中。

因此,我在Github中查找了包Seurat,但没有看到任何ggplot2-related options (https://github.com/satijalab/seurat/blob/master/R/zzz.R)。接下来是检查包的DESCRIPTION,它向我展示了Seurat使用的加载包。这是一个很长的列表,但我在那里发现了一个比较常见的定制图形包,cowplot。如果然后转到回购(https://github.com/wilkelab/cowplot/blob/master/R/setup.R):

函数(libname,pkgname) {#将默认主题切换到packageStartupMessage("\n********************************************************") .onAttach # ggplot2::theme_set( theme_cowplot ()) theme_cowplot packageStartupMessage(“注意:从1.0版本开始),牛仔不再改变“) packageStartupMessage(”默认的ggplot2主题了)。要恢复先前的“) packageStartupMessage(”行为,执行:\n theme_set(theme_cowplot())") theme_set}

从这些消息中,您可以看到用于(加载cowplot更改了ggplot2的默认主题)。出于好奇,我查看了这个更改何时发生在源(虽然不是当它被推到CRAN时)的提交:

https://github.com/wilkelab/cowplot/commit/158ccdfa45d6c3e99c8568afaa73f7d68cd6c9c2#diff-c9a33000e506e95bca8089aa91efd8b2

clauswilke于2018年3月29日

因此,从大约一年前开始,这个问题就不再可以重复了。然而,当意外行为发生时,这个搜索过程对将来的读者仍然是有用的。

TL;DR:

ggplot2-specific fix:最初的默认主题是theme_gray(),因此如果无法隔离影响代码的包,则始终可以手动将其添加到受影响的情节中,以恢复到以前的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45311721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档