Seurat,干扰ggplot2/plotly输出

Seurat,干扰ggplot2/plotly输出,r,ggplot2,package,seurat,R,Ggplot2,Package,Seurat,我正在Rstudio中编写一个R脚本,查看单个单元格数据并生成各种图形。我使用的软件包是ggplot2。当未加载Seurat库时,它会生成如下良好的图形输出: 然后,当Seurat库被导入时,图形将恢复为这种丑陋: 以下是Seurat加入后带来的进口清单: Imports: methods, ROCR, stringr, mixtools, lars, fastICA, tsne, Rtsne, fpc, ape, VGAM, pbapply, igraph, FNN, care

我正在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
关于如何在不改变图形输出的情况下显示这两个库,您有什么想法吗

尝试过的解决方案:

  • 尝试了“detach”(“package:Seurat”,unload=TRUE)//在关闭和重新加载RStudio时未还原绘图,并且不允许上游代码块提供ggplot2正常绘图
      一条评论要求我发布我的修复方案作为答案,所以我做了一些挖掘。当调用
      库(包)
      后发生意外行为时,这是因为该包有一个名为
      .onLoad
      .onAttach
      的函数。它们在加载或附加包时自动运行,通常用于设置选项、打印有用的消息等。最佳做法是,您应该使用一个补充函数,
      .onUnload
      撤消任何操作。见:

      有时,包装确实需要副作用。这是最常见的,如果 您的包与外部系统通信-您可能需要执行一些操作 软件包加载时的初始设置。。。如果使用.onLoad(), 考虑使用.ununLoad()来清除任何副作用。通过 约定、.onLoad()和好友通常保存在名为 zzz.R

      因此,我在Github repo中查找包
      Seurat
      ,没有看到任何与
      ggplot2
      相关的选项()。接下来是检查包的
      说明
      ,它向我显示了
      Seurat
      使用的加载包。这是一个很长的列表,但我发现了一个有点常见的自定义图形包,
      cowplot
      。如果你接着去回购():


      .onAttach看起来Seurat必须更改默认的主题设置。试试你的绘图代码
      +theme_gray()
      ,看看这是否会将其恢复到Seurat之前的设置。似乎有效,非常感谢@Brian@Brian请作为答案发布。@zx8754我做了,希望这是一个比我的简短评论更有趣的答案。
      .onAttach <- function(libname, pkgname) {
        # switch the default theme to theme_cowplot
        # ggplot2::theme_set(theme_cowplot())
        packageStartupMessage("\n********************************************************")
        packageStartupMessage("Note: As of version 1.0.0, cowplot does not change the")
        packageStartupMessage("  default ggplot2 theme anymore. To recover the previous")
        packageStartupMessage("  behavior, execute:\n  theme_set(theme_cowplot())")
        packageStartupMessage("********************************************************\n")
      }