网站首页 > 技术文章 正文
在进行数据探索的时候,我们要做的第一件事往往就是观察数据分布。在前边《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=[],即去掉所有纵轴刻度尺。然后我们还设置了子图的布局为紧密型,即子图间缝隙很窄。
好了,上边就是我们这张图的所有细节了,你掌握了吗?
要记得多加练习哦!
猜你喜欢
- 2024-10-11 sklearn分类模型汇总 sklearn svm分类
- 2024-10-11 一款小众但实用的自动化特征选择工具:AutoFeatSelect
- 2024-10-11 基于决策树算法完成鸢尾花的分类并使用scikit-learn进行交叉验证
- 2024-10-11 「程序员」如何5分钟掌握,pandas数据累计与分组?
- 2024-10-11 Python 机器学习 特征降维 python tsne降维
- 2024-10-11 mooc机器学习第七天-分类支持向量机svm.svc
- 2024-10-11 模型选择之交叉验证(简单交叉验证、S折交叉验证和留一交叉验证)
- 2024-10-11 I2C七宗罪之第二罪 七宗罪二哥
- 2024-10-11 PCA 主成分分析 PCA主成分分析实现鸢尾花数据集分类-MATLAB代码
- 2024-10-11 Python实现机器学习算法——随机森林
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)