美文网首页R plot散文心理
python + seaborn绘制热力图、聚类热图、散点图、箱

python + seaborn绘制热力图、聚类热图、散点图、箱

作者: Cache_wood | 来源:发表于2022-03-20 10:55 被阅读0次

    @[toc]

    热力图 heatmap

    热力图就是将矩形数据绘制为颜色编码矩阵。

    numpy数组绘制热力图
    import numpy as np;     #np.random.seed(0)
    import seaborn as sns; #sns.set()
    uniform_data = np.random.rand(10, 12)
    #print(uniform_data)
    ax = sns.heatmap(uniform_data)
    
    在这里插入图片描述
    更改默认的colormap范围
    ax = sns.heatmap(uniform_data, vmin=0, vmax=1)
    
    在这里插入图片描述
    使用发散色图绘制以 0 为中心的数据的热力图
    normal_data = np.random.randn(10, 12)
    ax = sns.heatmap(normal_data, center=0)
    
    在这里插入图片描述
    使用特定的行和列标签绘制 dataframe
    flights = sns.load_dataset("flights")
    flights = flights.pivot("month", "year", "passengers")
    ax = sns.heatmap(flights)
    
    year   1949  1950  1951  1952  1953  1954  1955  1956  1957  1958  1959  1960
    month                                                                        
    Jan     112   115   145   171   196   204   242   284   315   340   360   417
    Feb     118   126   150   180   196   188   233   277   301   318   342   391
    Mar     132   141   178   193   236   235   267   317   356   362   406   419
    Apr     129   135   163   181   235   227   269   313   348   348   396   461
    May     121   125   172   183   229   234   270   318   355   363   420   472
    Jun     135   149   178   218   243   264   315   374   422   435   472   535
    Jul     148   170   199   230   264   302   364   413   465   491   548   622
    Aug     148   170   199   242   272   293   347   405   467   505   559   606
    Sep     136   158   184   209   237   259   312   355   404   404   463   508
    Oct     119   133   162   191   211   229   274   306   347   359   407   461
    Nov     104   114   146   172   180   203   237   271   305   310   362   390
    Dec     118   140   166   194   201   229   278   306   336   337   405   432
    
    在这里插入图片描述
    使用整数格式的数字值注释每个小单元格
    ax = sns.heatmap(flights, annot=True, fmt="d")
    
    在这里插入图片描述
    在每个单元格之间添加线
    ax = sns.heatmap(flights, linewidths=.5)
    
    在这里插入图片描述
    使用不同的 colormap
    ax = sns.heatmap(flights, cmap="YlGnBu")
    
    在这里插入图片描述
    将 colormap 置于特定值的中心
    ax = sns.heatmap(flights, center=flights.loc["Jan", 1955])
    
    在这里插入图片描述
    绘制每个其他列标签,而不绘制行标签
    data = np.random.randn(50, 20)
    ax = sns.heatmap(data, xticklabels=2, yticklabels=False)
    
    在这里插入图片描述
    在不同的坐标轴方向绘制颜色条
    grid_kws = {"height_ratios": (.9, .05), "hspace": .4}
    f, (ax, cbar_ax) = plt.subplots(2, gridspec_kw=grid_kws)
    ax = sns.heatmap(flights, ax=ax,
                      cbar_ax=cbar_ax,
                      cbar_kws={"orientation": "horizontal"})
    
    在这里插入图片描述
    使用遮罩绘制矩阵中的一部分
    corr = np.corrcoef(np.random.randn(10, 200))
    mask = np.zeros_like(corr)
    mask[np.triu_indices_from(mask)] = True
    with sns.axes_style("white"):
        ax = sns.heatmap(corr, mask=mask, vmax=.3, square=True)
    
    在这里插入图片描述

    聚类热图 clustermap

    import seaborn as sns; sns.set(color_codes=True)
    iris = sns.load_dataset("iris")
    species = iris.pop("species")
    g = sns.clustermap(iris)
    
    在这里插入图片描述
    使用不同的相似性指标
    g = sns.clustermap(iris, metric="correlation")
    
    在这里插入图片描述
    使用不同的色彩映射并忽略色彩映射限制中的异常值
    g = sns.clustermap(iris, cmap="mako", robust=True)
    
    在这里插入图片描述
    添加彩色标签
    lut = dict(zip(species.unique(), "rbg"))
    row_colors = species.map(lut)
    g = sns.clustermap(iris, row_colors=row_colors)
    
    在这里插入图片描述

    散点图 scattermap

    绘制一个两个变量的简单散点图
    import seaborn as sns; sns.set()
    import matplotlib.pyplot as plt
    tips = sns.load_dataset('tips')
    ax = sns.scatterplot(x='total_bill',y='tip',data=tips)
    
    在这里插入图片描述
    通过其他的变量分组并且用不同的颜色展示分组
    ax = sns.scatterplot(x='total_bill',y='tip',hue='time',data=tips)
    
    在这里插入图片描述
    一个类别变量不同的大小,用不同的颜色
    ax = sns.scatterplot(x='total_bill',y='tip',hue='day',size='smoker',
                         palette='Set2',data=tips)
    
    
    在这里插入图片描述

    箱型图 boxplot

    箱形图(或盒须图)以一种利于变量之间比较或不同分类变量层次之间比较的方式来展示定量数据的分布。图中矩形框显示数据集的上下四分位数,而矩形框中延伸出的线段(触须)则用于显示其余数据的分布位置,剩下超过上下四分位间距的数据点则被视为“异常值”。

    绘制一个单独的横向箱型图
    import seaborn as sns
    sns.set(style="whitegrid")
    tips = sns.load_dataset("tips")
    ax = sns.boxplot(x=tips["total_bill"])
    
    在这里插入图片描述
    根据分类变量分组绘制一个纵向的箱型图
    ax = sns.boxplot(x="day", y="total_bill", data=tips)
    
    在这里插入图片描述
    使用 swarmplot() 展示箱型图顶部的数据点
    ax = sns.boxplot(x="day", y="total_bill", data=tips)
    ax = sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")
    
    在这里插入图片描述

    提琴图 violinplot

    小提琴图的功能与箱型图类似。 它显示了一个(或多个)分类变量多个属性上的定量数据的分布,从而可以比较这些分布。与箱形图不同,其中所有绘图单元都与实际数据点对应,小提琴图描述了基础数据分布的核密度估计。

    小提琴图可以是一种单次显示多个数据分布的有效且有吸引力的方式,但请记住,估计过程受样本大小的影响,相对较小样本的小提琴可能看起来非常平滑,这种平滑具有误导性。

    绘制一个单独的横向小提琴图
    import seaborn as sns
    sns.set(style="whitegrid")
    tips = sns.load_dataset("tips")
    ax = sns.violinplot(x=tips["total_bill"])
    
         total_bill   tip     sex smoker   day    time  size
    0         16.99  1.01  Female     No   Sun  Dinner     2
    1         10.34  1.66    Male     No   Sun  Dinner     3
    2         21.01  3.50    Male     No   Sun  Dinner     3
    3         23.68  3.31    Male     No   Sun  Dinner     2
    4         24.59  3.61  Female     No   Sun  Dinner     4
    ..          ...   ...     ...    ...   ...     ...   ...
    239       29.03  5.92    Male     No   Sat  Dinner     3
    240       27.18  2.00  Female    Yes   Sat  Dinner     2
    241       22.67  2.00    Male    Yes   Sat  Dinner     2
    242       17.82  1.75    Male     No   Sat  Dinner     2
    243       18.78  3.00  Female     No  Thur  Dinner     2
    
    在这里插入图片描述
    根据分类变量分组绘制一个纵向的小提琴图
    ax = sns.violinplot(x="day", y="total_bill", data=tips)
    
    在这里插入图片描述

    相关文章

      网友评论

        本文标题:python + seaborn绘制热力图、聚类热图、散点图、箱

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