我正在Rstudio中编写一个R脚本,查看单个单元格数据并生成各种图表。我使用的包是ggplot2。当未加载Seurat库时,它会生成像这样的好图输出:
然后,当导入Seurat库时,图形会恢复到这种丑陋状态:
以下是Seurat所带来的进口产品清单:
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
对于如何在不改变图形输出的情况下同时出现两个库,有什么想法吗?
已尝试的解决办法:
发布于 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时)的提交:
clauswilke于2018年3月29日
因此,从大约一年前开始,这个问题就不再可以重复了。然而,当意外行为发生时,这个搜索过程对将来的读者仍然是有用的。
TL;DR:
ggplot2
-specific fix:最初的默认主题是theme_gray()
,因此如果无法隔离影响代码的包,则始终可以手动将其添加到受影响的情节中,以恢复到以前的行为。
https://stackoverflow.com/questions/45311721
复制相似问题