Python中文社区生物信息学与算法生物信息编程

python (Seaborn) 实现heatmap

2020-02-04  本文已影响0人  生信编程日常

对于习惯使用python的朋友,可以考虑用seaborn库画图,方便高效。

对于热图,可以考虑使用seaborn.clustermap来做。其参数如下:

seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean', z_score=None, standard_scale=None, figsize=(10, 10), cbar_kws=None, row_cluster=True, col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None, col_colors=None, mask=None, dendrogram_ratio=0.2, colors_ratio=0.03, cbar_pos=(0.02, 0.8, 0.05, 0.18), tree_kws=None, **kwargs)

其中data是个2D array,且不能含有NA (这个与R中的heatmap.2等不同);

(此处用的seaborn版本是0.10.0)

import seaborn as sns
sns.set(color_codes=True)
iris = sns.load_dataset("iris")
species = iris.pop("species")
g = sns.clustermap(iris)
heatmap1

修改大小/排布等:

g = sns.clustermap(iris,
                   figsize=(7, 5),
                   row_cluster=False,
                   dendrogram_ratio=(0.1, 0.2),
                   cbar_pos=(0, 0.2, 0.03, 0.4))
heatmap2

加上color bar:

lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)
heatmap3

修改颜色和颜色范围,其中cmap参数可以修改颜色,有很多可选,可以参考这个帖子https://blog.csdn.net/ztf312/article/details/102474190

g = sns.clustermap(iris, cmap="jet", vmin=0, vmax=10)
heatmap4

修改距离计算方法,默认为欧式距离:

g = sns.clustermap(iris, metric="correlation")
heatmap5

对行进行标准化,0是行,1是列:

g = sns.clustermap(iris, z_score=0, cmap="vlag")
heatmap6

欢迎关注~


生信编程日常
上一篇下一篇

猜你喜欢

热点阅读