计算机系统应用教程网站

网站首页 > 技术文章 正文

《一天一图学Python可视化》|第4天:高效探索数据分布

btikc 2024-10-11 11:20:18 技术文章 4 ℃ 0 评论

在进行数据探索的时候,我们要做的第一件事往往就是观察数据分布。在前边《7天学会Python最佳可视化工具Seaborn》系列中,我们曾经讲过seaborn.distplot()的使用,它是一个高级、统一的接口,集成了直方图、核密度估计、地毯图等。

忘记了的同学也不要紧,今天我们再来从实战中温习一下。这个函数适用于观察连续数据的分布,注意,连续数据,或者说数值型数据、定量数据。对于离散数据分布的可视化,不太适合使用这个函数哦。


想要学习更多图形可视化的,可以到我的历史文章中关注我其他更多的分享。比如《从零开始学Python可视化》系列,《7天学会Python最佳可视化工具Seaborn》系列等。


老规矩,我们先看代码和图形风格:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="white", palette="muted", color_codes=True)
rs = np.random.RandomState(10)
#
# 生成由2*2的四张子图构成的一个图形对象
f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
sns.despine(left=True)
#
# 生成一组长度为100的样本数据
d = rs.normal(size=100)
#
# 直方图
sns.distplot(d, kde=False, color="b", ax=axes[0, 0])
#
# 核密度估计配合地毯图(rug)
sns.distplot(d, hist=False, rug=True, color="r", ax=axes[0, 1])
#
# 带阴影的KDE图
sns.distplot(d, hist=False, color="g", kde_kws={"shade": True}, ax=axes[1, 0])
#
# 直方图加核密度估计曲线
sns.distplot(d, color="m", ax=axes[1, 1])
#
# 去掉纵轴刻度,收紧子图间的间距
plt.setp(axes, yticks=[])
plt.tight_layout();

可以看到,我们分别在四张图中以不同的形式和样式绘制了样本的分布图。那么接下来,我们就详细讲解下每一步的细节:

第一步,我们导入了必要的库。

第二步,我们设置了绘图的风格样式。这里style="white"就是白底风格,palette用于设置调色板,color_codes需要与palette配合使用,当我们设置color_codes=True时,我们就可以直接使用"g"/"r"/"b"等颜色的简写,然后seaborn会自动将它们匹配到这个palette中与之对应的颜色名称(不同的调色板中,有些颜色在色调、饱和度、亮度上做了一些调整,因此一般都有自己的另外的名字)。

第三步,我们生成了一个图形对象,大小为(7,7), 并且由2*2四个坐标轴构成,这两行共享x轴;去掉左边、上边和右边的边界(上、右是默认去除的,因此这里我们只看到了left=True,但是三边都消失了)。plt.subplots()函数会返回一个图形对象(这里的f)以及一个坐标轴数组,这里由于我们设置了行和列都是2,因此返回的是一个2*2的数组。

第四步,生成样本数据。我们使用RandomState对象的normal方法生成符合正态分布的100个数据。

第五步,我们在左上角绘制一个直方图,seaborn.distplot()函数中,默认情况下会同时绘制直方图和核密度估计。因此如果只想绘制直方图的话,需要设置kde=False,然后我们指定颜色为蓝色,坐标轴为axes[0, 0],即左上角的子图。

第六步,我们在右上角绘制一个核密度估计图,同时设置hist=False来去掉直方图,设置rug=True来打开地毯图(每个样本会在地上出现一个毛刺),设置颜色为红色,坐标轴为axes[0, 1](第一行第二列)。

第七步,在左下角绘制一个核密度估计图,并且使用hist=False关闭直方图,设置颜色为绿色,使用字典关键字参数设置{"shade": True}来打开阴影,设置坐标轴为axes[1, 0]。

第八步,在右下角绘制默认的distplot(),设置颜色为紫色,坐标轴为axes[1, 1]。

第九步,使用plt.setp()来设置图形属性,在这里我们对所有的坐标轴设置了yticks=[],即去掉所有纵轴刻度尺。然后我们还设置了子图的布局为紧密型,即子图间缝隙很窄。

好了,上边就是我们这张图的所有细节了,你掌握了吗?

要记得多加练习哦!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表