美文网首页生物信息学与算法呆鸟的Python数据分析
(建议收藏)Python可视化15matplotlib&sebo

(建议收藏)Python可视化15matplotlib&sebo

作者: pythonic生物人 | 来源:发表于2020-08-07 21:44 被阅读0次

    本篇使用python中seaborn.clustermap绘制聚类热图(clustermap)。

    本文将了解到什么?

    1、成品聚类热图(clustermap)展示
    2、绘图数据集准备 
    3、 seaborn.clustermap绘制聚类热图(clustermap)
            3.0 聚类热图函数seaborn.clustermap语法
            3.1 默认参数绘图
            3.2 pivot_kws:辅助选择data中某一部分数据绘图
            3.3 method:聚类算法
            3.4 metric:簇之间距离选择 
            3.5 figsize:热图的宽和高设置 
            3.6 cbar_kws:图例设置
            3.7 row_cluster、col_cluster:行列聚类开关
            3.8 row_colors: y轴方向绘制分类色条 
            3.9 col_colors: x轴方向绘制分类色条 
            3.10  cbar_pos:图例位置、宽、高设置
            3.11 tree_kws:各个簇之间连线特性设置 
            3.12 cmap:热图填充色colormap设置 
            3.13 annot、annot_kws:显示文本、文本属性设置 
            3.14 其它参数设置
    
    4、seaborn.clustermap所有参数详解代码
    

    聚类热图可以简单理解为:使用距离算法将距离相近的东西成簇聚为一类。

    1、成品聚类热图(clustermap)展示

    image

    2、绘图数据集准备

    依旧使用sklearn中鸢尾花iris数据集,数据集详细介绍请戳:鸢尾花iris数据集详细介绍

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    import seaborn as sns
    import palettable
    
    plt.rcParams['font.sans-serif']=['SimHei']  # 用于显示中文
    plt.rcParams['axes.unicode_minus'] = False  # 用于显示中文
    
    from sklearn import datasets 
    iris=datasets.load_iris()
    x, y = iris.data, iris.target
    pd_iris = pd.DataFrame(np.hstack((x, y.reshape(150, 1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] )
    

    查看数据集前五行

    pd_iris.head()
    
    image

    数据集简单统计

    pd_iris.describe()
    
    image

    3、 seaborn.clustermap绘制聚类热图(clustermap)

    3.0 聚类热图函数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)
    

    3.1 默认参数绘图

    plt.figure(dpi=200)
    sns.clustermap(data=pd_iris,#仅仅需传入绘图数据集
                  )
    
    image

    3.2 pivot_kws:辅助选择data中某一部分数据绘图

    3.3 method:聚类算法

    默认为为average算法,可选’single’,’complete’ ,’weighted’,’centroid’,’median’;各算法区别请参考scipy中:scipy.cluster.hierarchy.linkage

    sns.clustermap(data=pd_iris,
                   method='average',#'average'算法
                  )
    
    image
    #注意观察y轴方向值的变化
    sns.clustermap(data=pd_iris,
                   method='single',#'single'算法
                  )
    
    image
    sns.clustermap(data=pd_iris,
                   method='weighted',#'weighted'算法
                  )
    
    image

    3.4 metric:簇之间距离选择

    默认为欧式距离euclidean,可选距离: ‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’,
    ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’,
    ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’.各个距离之间区别,scipy中有详细介绍:scipy.spatial.distance.pdist

    sns.clustermap(data=pd_iris,
                   metric='euclidean',#欧式距离'euclidean'
                  )
    
    image
    #注意右侧值的变化
    sns.clustermap(data=pd_iris,
                   metric='braycurtis',#Bray-Curtis距离
                  )
    
    image

    3.5 figsize:热图的宽和高设置

    sns.clustermap(data=pd_iris,
                   figsize=(5, 10),            
                  )
    
    image

    3.6 cbar_kws:图例设置

    方法类似普通heatmap,不赘述,参考: 热图图例详细设置

    3.7 row_cluster、col_cluster:行列聚类开关

    sns.clustermap(data=pd_iris,
                   row_cluster=False, #行方向不聚类
                   col_cluster=True, #列方向聚类
                   
                  )
    
    image

    3.8 row_colors: y轴方向绘制分类色条

    #左侧颜色条
    row_c = dict(zip(pd_iris['class'].unique(), ['green','yellow','pink']))
    sns.clustermap(data=pd_iris,
                   row_colors=pd_iris['class'].map(row_c), #行方向聚类用颜色区分不同类               
                  )
    
    image

    3.9 col_colors: x轴方向绘制分类色条

    image

    3.10 cbar_pos:图例位置、宽、高设置

    sns.clustermap(data=pd_iris,
                   cbar_pos=(0.02, 0.8, 0.05, 0.18), #(left, bottom, width, height)
                   
                  )
    
    image
    #图例向右,向下移动
    sns.clustermap(data=pd_iris,
                   cbar_pos=(0.12, 0.4, 0.05, 0.18), 
                   
                  )
    
    image

    3.11 tree_kws:各个簇之间连线特性设置

    线型设置参考:python中line属性设置

    sns.clustermap(data=pd_iris,
                   tree_kws={'linestyles':'dashed',#线型
                            'colors':'steelblue',#线色
                            'linewidths':2},#线宽 
                   
                  )
    
    image

    3.12 cmap:热图填充色colormap设置

    colormap设置参考:python中colormap详细设置

    image

    3.13 annot、annot_kws:显示文本、文本属性设置

    sns.clustermap(data=pd_iris,
                   annot=True,#默认为False,当为True时,在每个格子写入data中数据
                   figsize=(15, 30),#热图宽和高
                   annot_kws={'size':12,'weight':'normal', 'color':'red'},#设置格子中文本的大小、粗细、颜色
                   cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
                  )
    sns.set(font_scale=1.5)#热图及color bar中刻度标签值字号
    
    image

    3.14 其它参数设置

    普通heatmap中方法 :heatmap关键参数详解


    4、seaborn.clustermap所有参数详解代码

    感兴趣可以关注公众号免费获取。 image

    5、参考资料

    本篇结束,下一篇介绍相关性热图


    更好的阅读体验请戳:matplotlib&seborn绘制聚类热图clustermap

    欢迎微信搜索关注:pythonic生物人

    相关文章

      网友评论

        本文标题:(建议收藏)Python可视化15matplotlib&sebo

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