pythonic生物人

51个图表,完美展示数据分布关系!

本节介绍seaborn展示数据分布关系的图表(Distribution plots)的实现,该类图表用于展示数据集的分布规律,帮助快速获取数据多方面信息,例如,观测值的范围、中心趋势、是否存在某个方向上严重偏斜、是否存在双峰性、是否存在显著的异常值等等。

分布关系的图表包含:直方图、核密度估计(KDE)图、累积曲线图和轴须图(rug plot)。

小编整理了以上4类图51个变种模版,文末领取。


直方图

直方图旨在通过分箱和计数观测值来近似生成数据的概率密度函数。例如,堆积叠加直方图,

sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='hist',
    hue="企鹅的种类",  #hue指定分组
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
    multiple="stack")  #堆叠叠加
Image

例如,百分比堆积,每个箱子中各组百分比累加为1,

sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='hist',
    hue="企鹅的种类",  #hue指定分组
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
    multiple="fill")  #百分比堆积
Image

核密度估计图

核密度估计(KDE)图功能类似上的直方图,区别于直方图使用离散箱,KDE图使用高斯核(Gaussian kernel)对观测值进行平滑处理,生成连续的密度估计,KDE图更清晰且更易解释。

例如,图层叠加,

sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='kde',
    hue="岛屿",  #按照变量"岛屿"分组
    fill=True,
    multiple="layer",  #指定按照'layer'叠加
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
)
Image

例如,堆积叠加,

sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='kde',
    hue="岛屿",
    fill=True,
    multiple="stack",  #"stack"设置堆积叠加
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
)
Image

例如,百分比叠加,

sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='kde',
    hue="岛屿",
    fill=True,
    multiple="fill",  #"fill"设置百分比叠加
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
)
Image

累积曲线图

累积曲线图,全称“经验累积分布函数”(ecdf,empirical cumulative distribution functions),反映数据集中小于某值的观测比例,提供直观的分布图。

例如,分组累积曲线图,

sns.displot(data=penguins,
            x="鳍长 (毫米)",
            hue="企鹅的种类", # hue设置分组
            kind="ecdf",
            palette=["#006a8e", "#b1283a", "#a8a6a7"])
Image

例如,补集累积分布函数,

sns.displot(
    data=penguins,
    x="鳍长 (毫米)",
    hue="企鹅的种类",
    complementary=True,  #complementary开启补集累积分布函数complementary CDF (1 - CDF)
    kind="ecdf",
    palette=["#006a8e", "#b1283a", "#a8a6a7"])
Image

轴须图

轴须图(rug plot)通过在x轴和y轴上绘制刻度以显示变量的位置,以补充其他图表。

例如,散点图和轴须图一起用,

sns.scatterplot(#使用axes-level方法:如上文的scatterplot()、lineplot()等
    data=penguins,  
    x="鳍长 (毫米)",
    y="喙长 (毫米)",
    hue="企鹅的种类",
    style="企鹅的种类",
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
    s=200)
sns.rugplot(
    data=penguins,
    x="鳍长 (毫米)",  #x轴轴须图
    y="喙长 (毫米)",  #y轴轴须图
    hue="企鹅的种类",
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
    legend=False  #关闭轴轴须图图例
)
Image

再例如,kde图和轴须图一起使用,

sns.kdeplot(#使用axes-level方法:kdeplot()
    data=penguins,  
    x="鳍长 (毫米)",  #x轴轴须图
    hue="企鹅的种类",
    fill=True,
    multiple="layer",
    palette=["#006a8e", "#b1283a", "#a8a6a7"])
sns.rugplot(data=penguins,
            x="鳍长 (毫米)",
            hue="企鹅的种类",
            palette=["#006a8e", "#b1283a", "#a8a6a7"],
            legend=False)  #关闭轴轴须图图例
Image

直方图、核密度估计(KDE)图、累积曲线图和轴须图(rug plot)更多变种👇,

Image

-END-
分享一份原创Python可视化教程:530张图形+8000行代码+详细代码注释+后续免费更新+学习交流群,部分目录,
Image

👇加入学习(收费,请备注:169)

Image