Seaborn热图中基因标签'rnaseh2b'被错误替换为'maseh2b'的问题求助
Seaborn热图中基因标签'rnaseh2b'被错误替换为'maseh2b'的问题求助
我最近在做基因相关的热图分析时遇到了一个特别诡异的问题:当我传入包含rnaseh2b的基因列表生成Seaborn热图时,最终导出的图片里这个基因的标签居然被自动改成了maseh2b!前后做了15个左右的热图,只有这一个基因出现了这种替换情况,实在搞不懂哪里出问题了。
更奇怪的是,maseh2b这个基因在NCBI或者Ensembl数据库里根本查不到,只在极少数论文里见过相关提及。我发现是原标签的开头rn被替换成了ma,尝试修改Matplotlib的字体参数(比如换成Liberation Sans)也完全没用。
先说明一下我的系统环境:
- 系统:Ubuntu 24.04.1 LTS (pro)
问题核心
代码里明确使用的rnaseh2b,调试打印Y轴标签时显示的也是正确内容,但最终导出的图片里就变成了maseh2b。
我的代码
# **Inspect the y-tick labels set by seaborn/matplotlib** plt.rcParams["font.family"] = "Liberation Sans" # 试过DejaVu Sans等常见字体也没用 plt.figure(figsize=(10, 8)) ax = sns.heatmap( -np.log10(pvals_sorted), # 使用排序后的p值数据 cmap="viridis", linewidths=0.5, cbar_kws={"label": "-log10(corrected p-value)"} ) print("Y-tick labels on the heatmap:") print([label.get_text() for label in ax.get_yticklabels()]) print("Data passed to sns.heatmap:") print(-np.log10(pvals_sorted)) # 显式设置Y轴标签 ax.set_yticklabels(pvals_sorted.index.tolist(), rotation=0) title = f"Top Genes Heatmap (Corrected P-values): High vs Low {target_gene} Expression Groups" if timepoint_filter: title += f" (Timepoint: {timepoint_filter})" if cell_type_filter: title += f" (Cell Type: {cell_type_filter})" ax.set_title(title, fontsize=14) ax.set_xlabel(f"{target_gene} Expression Groups") ax.set_ylabel("Genes") # 保存并显示图片 plt.savefig(f"./figures/{save_prefix}_{target_gene}_top_genes_heatmap_corrected_pvalues.png", dpi=600, bbox_inches="tight") plt.show() # 再次打印确认标签 print("Y-tick labels on the heatmap after setting:") print([label.get_text() for label in ax.get_yticklabels()])
调试输出结果
- Y轴标签打印结果:
['lama1', 'rnaseh2b', ...]
- 传入Seaborn热图的数据:
high low lama1 4.009937 3.116815 rnaseh2b 3.318717 33.666719
有没有大佬遇到过这种情况?或者能帮我分析下可能的原因吗?
备注:内容来源于stack exchange,提问作者kuaiat
相关产品推荐
相关产品推荐

