近20期数据验证(绿色代表正确的):
|
数据可视化的图表种类繁多各式各样,因此我们需要掌握如何在特定场景下使用特定的图表
数据可视化是为业务目的服务的,好的可视化图表可以起到清晰准确反映業务结果的目的在选择使用何种图表时,通常我们需要首先考虑你想通过可视化阐述什么样的故事受众是谁,以及打算如何分析结果
关于如何利用数据创造出吸引人的、信息量大的、有说服力的故事,进而达到有效沟通的目的可以进一步阅读这本书学习。
本章将介紹不同场景适合的可视化图表类型使用注意事项,以及如何用现成的绘图接口来呈现
我们将常见的场景分为5大类:
4)展示排序信息(Ranking)
线图(也叫折线图)是众多图表中的基本图形。它由一系列的数据点和连接这些数据点的线段组成
它的形式和散点图类似,区别是
①线图的数据点通常是有序排列的(一般按X轴的值顺序)
②线图多了线段连接数据点
③线图是描述趋势变化的,散点图昰描述两个变量的相关性的
线图常用来呈现时间趋势的变化(时间序列),所以X轴通常代表某个时间间隔
线图可以直接用pyplot.plot
函数绘制只输入一列数的话会默认为Y轴的值,然后自动生成X轴;亦可输入两列数分别代表X轴和Y轴
具体用法和常用参数见下面参考代码
需要注意的是,这里只有5条线尚能看清楚,但是如果如果超过5条10条甚至更多的时候,花在一张图上基本看不到什么有效信息这时候我们可以采取两种办法:
下面是突出某一重点的多线图:
(突出PA为橘色,其他的都为灰色)
一张图显礻多条线过于拥挤的时候可以分成多个小的子图来显示。
多个子图对比的时候需要注意,X轴和Y轴的刻度大小需要严格一致不然会带來误导。
面积图和折线图从形式上看非常相似。区别只是面积图在折线图的基础上填充了折线下面的区域。可以用颜色或阴影去填充
有很多人钟情于面积图,因为区域的填充可以让人更直观的看出数据的变化趋势
面积跟折线图作图非常类似,我们只需多一步填充的操作
这里更推荐使用fill_between
,在之后的定制化操作中更方便一点;stackplot
更多的是用在堆积面積图中
具体用法见下面参考代码
堆积面积图是基础面积图的一个延伸,它将多个类别的数据变化都显示在了一个图形中
堆积图可以用stackplot
函数绘制,它的数据输入方式可以是一个X和多个Y也可以将多列Y的数据合并成一个,如下
小提琴图是用来展示多组数据的分布状态以及概率密度这种图表结合了箱形图和密度图的特征。小提琴图的功能与箱型图类似 它显示了一个(或多个)分类变量多个属性上的定量数據的分布,从而可以比较这些分布与箱形图不同,其中所有绘图单元都与实际数据点对应小提琴图描述了基础数据分布的核密度估计。
1.不适合展示只有很少组别的数据
2.按照中位数排序能让数据看起来更直观
小提琴图可以用seaborn包的violinplot
方法实现具体用法如下
箱形图(或盒须图)以一种利于变量之间比较或不同分类变量层次之间比较的方式来展示定量数据的分布。矩形框显示数据集的上下四分位数而矩形框中延伸出的线段(触须)则用于显示其余数据的分布位置,剩下超过上下四分位间距的数据点则被视为“异常值”
箱型图的基本作用如下:
数据异常值 箱形图为我们提供了识别异常值的一个标准:异常值被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的值。
偏态和尾重 箱型图揭示了数据批分布偏态囷尾重的部分信息尽管它们不能给出偏态和尾重程度的精确度量,但可作为我们粗略估计的依据
数据的形状 同一数轴上,几批数据的箱形图并行排列几批数据的中位数、尾长、异常值、分布区间等形状信息便一目了然。在一批数据中哪几个数据点出类拔萃,哪些数據点表现不及一般这些数据点放在同类其它群体中处于什么位置,可以通过比较各箱形图的异常值看出
1.箱型图隐藏了每个分组的数据量信息,可以通过标注或箱子宽度来展现
2.箱型图隐藏了背后的分布信息当数据量较少时可以使用数据抖动(jitter),当数据量较大时可以使用小提琴图来展现
箱型图可以直接使用seaborn的boxplot
方法来实现。
直方图只能接收数值类型的变量数据该变量被切割成几个箱子,每个箱子的高度代表处於分箱中的数量
1.使用过程中要注意分箱数量的选择
2.不要用直方图展示超过5个变量的分布情况
密度图和直方图很类似,同样用来展示数值型变量的分布情况
1.注意密度函数的带宽
2.不要用直方图展示超过5个变量的分布情况
散点图常用于查看数值型变量之间的相关性同时可以利鼡不同颜色来区分样本所属的类别
绘制散点图时要避免Overplotting,意思是由于散点数量过多导致图中的样例点过度重合
为了避免overplotting,第一种方式可鉯通过抽样来作图第二种方式可以用热力图代替,第三种方式是调节样本点的size
密度图对于一组数值变量可以理解为先对其进行二维分箱,再分别统计每个箱子的对应指标;对于分类变量而言箱子一般可以指定为对应的类别。但通常热力图更多用来表示数值变量的总體信息。
1.考虑到长尾分布等情况经常需要对数据做标准化的预处理
2.经常需要对数据先进行分箱再绘图,对于类别变量而言可以进行类別的合并;同时对于数值变量而言,既可以包含分位数分箱也可以包含等间隔分箱
可以直接使用seaborn包的heatmap
方法绘制热力图,用jointplot
绘制蜂窝热力圖
在上述密度图作图时由于原来的特征是长尾分布的,所以导致密度图的偏向性很高此时可以考虑使用对数变换、分位数截断和标准差截断
气泡图适用于超过二维特征的可视化,一般可以用气泡的颜色和大小来表示第三维、第四维的特征可以认为气泡图是散点图的衍苼
1.使用气泡面积而不是气泡的直径作为数值指标对比
2.和散点图类似,气泡图同样要注意overplotting的问题
可以使用matplotlib的scatter
方法绘制气泡图同时用颜色和呎寸参数控制第三,第四维度
柱状图用来展示一个类别变量和一个数值变量之间的关系每个柱子代表一个类别,柱子的长度代表这个类别的数值通常来说,柱状图是展示此类信息最有效的方式之一
2.类别标签较长时,可以采用横向柱状图
3.给柱子排序通常更有利于展示信息
雷达图是一种展示多个定量变量的二维图表所有变量交汇在中心同一点,由于使用限制较多在可视化中一般較少用到。
1.不要在一张图显示超过5个组别
2.当不同组别标度差别很大时谨慎使用雷达图
可以使用极坐标系和多边形填充的方式绘制雷达图,具体用法如下
平行坐标图用来比较样本在一组数值型变量上的特征它是雷达图的另一种表现形式,在可视化中更推荐被使用
1.不适合鼡于组别过多的情况
2.可以在X轴对数据排序,避免曲线之间的交叉
棒棒糖图本质上是柱状图的另一种表现形式区别是把柱子用线和点来代替,但是从视觉上表现效果更好
1.排序会使得显示效果更好
2.如果因为某种原因不能保持排序状态,那么宁愿选择柱状图
圆形柱状图相比于柱状图更吸引眼球但同时也更难识别出柱子尺寸的差别,因此只有当你有大量类别需要展示并且有一些明显突出的类别时才会使用。
1.內圈的比例不能太小一般须超过外圈的三分之一
2.通常只有当你有很多类别需要展示时才会用(>40)
在matplotlib中,可以通过极坐标系下的柱状图加仩内圈的圆来绘制圆形柱状图
饼图在图像上是一个被分成若干部分的圆用于反映每个部分对于整体所占的比重。
1.如果使用百分数确保咜加起来是100%
2.不要使用3d和图例,使得图的阅读性更差
甜甜圈图和饼图极为类似都是用来反映几个对象的组成比例,因而也有着相似的注意倳项
1.如果使用百分数确保它加起来是100%
2.不要使用3d和图例,使得图的阅读性更差
在绘图时可以通过在饼图的中心画一个和底色相同的同心圆方式来绘制具体用法如下
文氏图用于表示不同集合的有限集合之间所有可能的逻辑关系,每个集合用一个圆表示圆的大小反映了该组嘚重要性,组与组之间通常会有交叠交叠的部分体现了不同组之间的交叉数据。
1.不建议绘制超过3个集合的venn图超过3个集合的venn图不便于理解
2.图中的数字指代集合之间交集的元素个数
文氏图可以利用matplotlib_venn包中的venn2和venn3方法绘制两个集合或三个集合的之间的逻辑关系。文氏图的数据类型鈳以是set或tuple
树图将数据显示为一组嵌套的矩形,通过矩形的面积反映其取值大小使用配色方案,鈳以表示多个维度:组、子组
树图的优势是充分利用了空间,使得在有限的空间内展示大量数据
1.不要在层次结构中注释超过3个级别,这會使图形不可读
2.优先考虑层次结构的最高层次
1.用Drugs数据集,做出面积图的多子图形式
注意,需要添加如下要素:
①添加每个子图标题茬子图右上方;
②添加整个画布的总标题,在画布左上方;
③添加X和Y轴的标签
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。