首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加颜色条来标记来自`scanpy.pl.heatmap`图中带有`annadata.obs['samples']`的样本的单元格?

如何添加颜色条来标记来自`scanpy.pl.heatmap`图中带有`annadata.obs['samples']`的样本的单元格?
EN

Stack Overflow用户
提问于 2021-07-08 23:57:39
回答 1查看 53关注 0票数 0

谁能帮助我,告诉我:如何在scanpy.pl.heatmap plot (https://scanpy.readthedocs.io/en/stable/generated/scanpy.pl.heatmap.html)中添加颜色条来标记来自哪个样本的单元格( annadata.obs['samples'] )?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-22 06:16:35

我解决了这个问题,我的解决方案是:

代码语言:javascript
复制
from anndata import AnnData
import numpy as np
import pandas as pd
    
#-- Create a reproducible example
gene_exp = np.array([[0,2,0,1], [1,2,1,3], [6,2,4,1], [5,2,2,1]])
adata = AnnData(gene_exp)
adata.obs['sample'] = ['sample1', 'sample2', 'sample3', 'sample4']
adata.var['gene'] = ['g'+str(i) for i in range(4)]
代码语言:javascript
复制
obs = adata.obs
sample1_idx = obs['sample'] == 'sample1'
sample2_idx = obs['sample'] == 'sample2'
sample3_idx = obs['sample'] == 'sample3'
sample4_idx = obs['sample'] == 'sample4'

data = (np.arange(obs.shape[0])+1)/sum(obs['sample'].value_counts())
代码语言:javascript
复制
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = (20,1)
plt.axis('off')
for a in data[sample1_idx]:
    plt.axvline(x=a, c = 'g',linewidth=2)
for b in data[sample2_idx]:
    plt.axvline(x=b, c = 'lime',linewidth=2)
for c in data[sample3_idx]:
    plt.axvline(x=c, c = 'yellow',linewidth=2)
for d in data[sample4_idx]:
    plt.axvline(x=d, c = 'y',linewidth=2)

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

https://stackoverflow.com/questions/68304993

复制
相关文章

相似问题

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