本次分享Python matplotlib实现Heatmap(热图)的效果。
普通heatmap图
普通热图严格来说不属于热图,而是颜色图(Color Image)。其生成过程不涉及数据转换计算,而是将数据简单映射到一个网格矩阵中,然后根据预先指定的颜色序列为网格矩阵中的数据赋予不同的颜色,从而利用颜色深浅来表示数据的大小。
使用上文章节“3.2.6 gene数据集”的数据,利用matplotlib Axes.imshow实现普通热图,下图展示多种colormap效果(参考上文章节“6.11 精讲配色(colors/colormaps)”)
# 数据准备
gene1 = gene.iloc[:15, :]
gene_names = gene1.index
sample_names = gene1.columns
heatmap_data = gene1.values
# 绘制热图(核心代码)
for ax, cmap, title in zip(axes.ravel(), cmaps, titles):
im = ax.imshow(heatmap_data, cmap=cmap, aspect='auto') # imshow绘制热图
ax.set_title(title, fontsize=20)
ax.set_xticks(np.arange(len(sample_names)))
ax.set_xticklabels(sample_names, rotation=45, ha="right",
fontsize=20) # 设置x轴标签
ax.set_yticks(np.arange(len(gene_names)))
ax.set_yticklabels(gene_names, fontsize=20) # 设置y轴标签
for i in range(len(gene_names)):
for j in range(len(sample_names)):
ax.text(