scanpy保存图片注意点

%load_ext rpy2.ipython
%%R -o counts -o meta
suppressMessages(library(splatter))

params <- newSplatParams()

params <- setParam(params, "nGenes", 5000)
params <- setParam(params, "batchCells", c(500,500,500))
params <- setParam(params, "batch.facLoc", 0.5)
params <- setParam(params, "batch.facScale", 0.5)
params <- setParam(params, "group.prob", c(1/3,1/3,1/3))

sim <- splatSimulate(params, method="groups", verbose=FALSE)

counts = data.frame(counts(sim))
meta = data.frame(colData(sim))
import anndata
import scanpy as sc

adata = anndata.AnnData(X=counts.values.T, obs=meta)
sc.pp.normalize_per_cell(adata,counts_per_cell_after=10000)
sc.pp.log1p(adata)
sc.tl.pca(adata,svd_solver='arpack')
sc.pp.neighbors(adata, n_neighbors=9)
sc.tl.umap(adata)
sc.pl.umap(adata,color=['Batch','Group'])

可以看到数据是不用加入“./”, 否则就会报错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
今天又发现一个值得记录的地方,就是如果想保存scanpy的umap图像到一个指定位置,之前我以为只能设置sc.settings.figdir,这个其实看起来很不美观
我今天发现一个很简单的方式

import matplotlib.pyplot as plt
sc.pl.umap(adata,color=['Batch','Group'],show=False)
plt.savefig("./aabbcc.png")

我最近又发现一个问题就是说,有时标签太多,会影响到可视化,例如

import scanpy as sc
adata=sc.read("./Immune_ALL_hum_mou.h5ad")
sc.pp.normalize_total(adata,target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata,n_top_genes=1000,subset=True)
sc.pp.scale(adata)
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.pl.umap(adata,color=["batch","final_annotation"],ncols=1)

结果如下
在这里插入图片描述但是要想看的更清楚点,使用ncols参数即可
在这里插入图片描述
今天我发现这个保存图片的时候发现另一个问题

在这里插入图片描述在jupyter中显示的标签么有什么问题,但是保存的图片文件是这样的
在这里插入图片描述可以看到这个标签值显示一个字母

解决办法如下

import matplotlib.pyplot as plt
fig,ax=plt.subplots(figsize=(10,6))
sc.pl.umap(adata,color="Batch",show=False,ax=ax)
plt.savefig("./abb.png")

在这里插入图片描述
可以看到这个结果就正常了

import anndata
import matplotlib.pyplot as plt
import scanpy as sc

adata=sc.read("/Users/xiaokangyu/Desktop/dataset/single_cell/splatter_sim/4batch_4celltype.h5ad")
sc.pp.normalize_per_cell(adata,counts_per_cell_after=10000)
sc.pp.log1p(adata)
sc.tl.pca(adata,svd_solver='arpack')

sc.pp.neighbors(adata, n_neighbors=9)
sc.tl.umap(adata)
sc.tl.tsne(adata)
sc.tl.louvain(adata)

fig, axs = plt.subplots(4, 2, figsize=(20,16),constrained_layout=True)
sc.pl.tsne(adata, color="Group", title="Group tsne", ax=axs[0,0], show=False)
sc.pl.tsne(adata, color="Batch", title="Batch tsne", ax=axs[0,1], show=False)
sc.pl.umap(adata, color="Group", title="Group umap", ax=axs[1,0], show=False)
sc.pl.umap(adata, color="Batch", title="Batch umap", ax=axs[1,1], show=False)
sc.pl.umap(adata, color="louvain", title="Group umap", ax=axs[2,0], show=False,legend_loc="on data")
sc.pl.umap(adata, color="louvain", title="Batch umap", ax=axs[2,1], show=False,legend_loc="on data")
sc.pl.umap(adata, color="louvain", title="Group umap", ax=axs[3,0], show=False,legend_loc="on data")
sc.pl.tsne(adata, color="Group", title="Group tsne", ax=axs[3,1], show=False)

结果如下
在这里插入图片描述

关于legend 只显示部分,还有一种解决办法

sc.pl.tsne(adata, color='Group',  title='Denoised counts',show=False)
plt.savefig("./aaa.png")
sc.pl.umap(adata, color="Group",  title="Denoised counts",show=False)
plt.savefig("./bbb.png")
sc.pl.tsne(adata, color='celltype',  title='Denoised counts',show=False)
plt.savefig("./ccc.png",bbox_inches='tight')
sc.pl.umap(adata, color="celltype",  title="Denoised counts",show=False)
plt.savefig("./ddd.png")

这个可视化结果在jupyter中是可以正常显示的,但是保存图片中就会出现问题
在这里插入图片描述而保存图片时结果如下
在这里插入图片描述
在这里插入图片描述

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值