You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据转换及按Cluster分组绘制Heatmap的可行性咨询

数据转换与分组热力图实现方案

一、数据格式转换

你需要把现有宽格式的DataFrame(每行对应1个样本,包含Cluster列和多列基因表达量)转成三列的长格式,用Pandas的melt()函数就能快速实现:

import pandas as pd

# 假设原数据框名为df
melted_df = df.melt(
    id_vars=['Cluster'],  # 保留Cluster作为分组标识列
    var_name='Gene',      # 原基因列名转为Gene列的取值
    value_name='Expression'  # 原基因列的数值转为Expression列
)

执行后就能得到你想要的「Cluster + Gene + Expression」三列结构。

二、按Cluster分组制作热力图:完全可行

有两种常用实现思路,根据你的需求选择:

1. 绘制合并式热力图(按Cluster聚合基因表达)

如果想展示不同Cluster间的基因表达差异,可以先按Cluster和Gene分组计算平均表达量,再转成宽格式绘制热力图:

import seaborn as sns
import matplotlib.pyplot as plt

# 按Cluster和Gene分组计算平均表达,转回宽格式
cluster_gene_avg = melted_df.groupby(['Cluster', 'Gene'])['Expression'].mean().unstack()

# 绘制带聚类的热力图
sns.clustermap(cluster_gene_avg, cmap='viridis', figsize=(12,6))
plt.show()

2. 分面绘制单个Cluster的样本表达热力图

如果想查看每个Cluster内部所有样本的基因表达分布,可以用分面网格实现:

# 用FacetGrid按Cluster分面,每个子图绘制对应Cluster的样本-基因表达热力图
g = sns.FacetGrid(df, col='Cluster', col_wrap=2)
g.map_dataframe(
    sns.heatmap, 
    yticklabels=False,  # 隐藏样本行标签避免拥挤
    xticklabels=True,
    cmap='viridis'
)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者user20388122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:08:15