/plot

Some useful skills and scripts for python matplotlib

Primary LanguagePython

简明 python 可视化指南

数据可视化可以直观的显示数据的特性,大大方便人们理解数据的本质。 根据人们想要展示数据的目的,可以将数据展示分为以下4大类: 1)数据的比较。2)数据的分布。3)数据的构成。4)数据的关系。

image

数据的比较

数据的比较图被用来比较数据在某个维度上的数值的不同,可以很容易发现数据的最大值和最小值点。通常被用来比较有关系的两组数据的不同,例如,今年的销售额和去年的不同,TCP 在不同的网络条件下的吞吐量等等。

事实上,基本上最常见的多个曲线图以及多个条形图都可以用来进行数据的比较。

TODO: 补充多个曲线的代码。

数据的分布

数据的分布图,一般都是一维图。对于直方图hist和分布曲线图line,一般只有x坐标表示数据的实际值,而y坐标表示统计值,可以是概率等;而对于条形图,以及箱型图box,一般x轴坐标表示类别,纵坐标表示了数据的实际值。

直方图

对于观察或真正了解数据点的分布十分有用。以下为我们绘制的频率与 IQ 的直方图,我们可以直观地了解分布的集中度(方差)与中位数,也可以了解到该分布的形状近似服从于高斯分布。使用这种柱形(而不是散点图等)可以清楚地可视化每一个箱体(X 轴的一个等距区间)间频率的变化。使用箱体(离散化)确实能帮助我们观察到「更完整的图像」,因为使用所有数据点而不采用离散化会观察不到近似的数据分布,可能在可视化中存在许多噪声,使其只能近似地而不能描述真正的数据分布。

image

堆叠直方图

如果我们希望比较数据中两个变量的分布,有人可能会认为我们需要制作两个独立的直方图,并将它们拼接在一起而进行比较。但实际上 Matplotlib 有更好的方法,我们可以用不同的透明度叠加多个直方图。如下图所示,均匀分布设置透明度为 0.5,因此我们就能将其叠加在高斯分布上,这允许用户在同一图表上绘制并比较两个分布。

分布曲线图

最常见的表示数据分布的方式,就是CDF曲线和PDF曲线。

TODO: 更多例子,在python文件中写入代码。

条形图

当对类别数很少(<10)的分类数据进行可视化时,条形图是最有效的。当类别数太多时,条形图将变得很杂乱,难以理解。你可以基于条形的数量观察不同类别之间的区别,不同的类别可以轻易地分离以及用颜色分组。我们将介绍三种类型的条形图:常规、分组和堆叠条形图。

常规条形图

常规条形图如图所示。

分组条形图

分组条形图允许我们比较多个类别变量。如下图所示,我们第一个变量会随不同的分组(G1、G2 等)而变化,我们在每一组上比较不同的性别。

堆叠条形图

堆叠条形图非常适合于可视化不同变量的分类构成。在下面的堆叠条形图中,我们比较了工作日的服务器负载。通过使用不同颜色的方块堆叠在同一条形图上,我们可以轻松查看并了解哪台服务器每天的工作效率最高,和同一服务器在不同天数的负载大小。绘制该图的代码与分组条形图有相同的风格,我们循环地遍历每一组,但我们这次在旧的柱体之上而不是旁边绘制新的柱体。

箱型图

直方图和条形图对于可视化变量分布非常有用,但当我们需要更多信息时,怎么办?我们可能需要清晰地可视化标准差,也可能出现中位数和平均值差值很大的情况(有很多异常值),因此需要更细致的信息。还可能出现数据分布非常不均匀的情况等等。

箱线图可以给我们以上需要的所有信息。实线箱的底部表示第一个四分位数,顶部表示第三个四分位数,箱内的线表示第二个四分位数(中位数)。虚线表示数据的分布范围。

数据的构成

数据的构成图通常被用来观察两个指标:1)比较某个类别和其他的类别的不同。2)观察一个分类中的组成。

事实上所有的堆叠图都可以用来完成例如比较,分布的任务的同时表示该项数据的构成。

TODO: 需要更加详细的描述。以及举例。

数据的关系

image

数据的关系图一般是二维图,即同时拥有x和y坐标,主要就是散点图和曲线图常常用来1)展示数据之间的相关性,即一个变量随着另外一个剧烈变化2)发现数据之中的异常点,3)发现数据之中的集群现象

散点图

由于可以直接看到原始数据的分布,散点图对于展示两个变量之间的关系非常有用。你还可以通过用颜色将数据分组来观察不同组数据之间的关系,如下图所示。你还可以添加另一个参数,如数据点的半径来编码第三个变量,从而可视化三个变量之间的关系,如下方第二个图所示。

image

image

常用的例子包括:在公司的销售额和付出的广告费用之间是否有关系,或者是人们的收入和所处的地区之间是否有关系,等等。

曲线图

当一个变量随另一个变量的变化而变化的幅度很大时,即它们有很高的协方差时,线图非常好用。如下图所示,我们可以看到,所有专业课程的相对百分数随年代的变化的幅度都很大。用散点图来画这些数据将变得非常杂乱无章,而难以看清其本质。线图非常适合这种情况,因为它可以快速地总结出两个变量的协方差。在这里,我们也可以用颜色将数据分组。

Reference:

  1. https://community.qlik.com/servlet/JiveServlet/downloadBody/7816-102-2-10600/Choosing-A-GoodChart-Dissected-FINAL.pdf
  2. https://www.jiqizhixin.com/articles/031310
  3. http://blog.topspeedsnail.com/archives/787