python (Seaborn) 实现heatmap

作者: 生信编程日常 | 来源:发表于2020-02-04 21:12 被阅读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

    欢迎关注~


    生信编程日常

    相关文章

      网友评论

        本文标题:python (Seaborn) 实现heatmap

        本文链接:https://www.haomeiwen.com/subject/vyydxhtx.html