前言
数据可视化是数据分析中的一个重要的环节。一般来说,数据分析的结果常常充满着令人眼花缭乱的数字,而且一旦分析的数据集较大,所得到的结果数据量较多,单纯以数字形象呈现会使阅读者十分头疼。因此,为了让数据分析的结果以易于理解的形式让他人理解,将冰冷的数字转化为各种直观且明显的图形就显得尤为必要。Python作为一种便于进行数据分析的语言,其众多的使用者显然也考虑到了这一点,因此,matplotlib包就出现了。
1
matplotlib包简介
世界上有三种谎言:谎言,该死的谎言和统计数字。
——马克.吐温
Matplotlib是python进行数据分析时一个常用的作图包,其一般用来完成常用的2D图绘制,例如折线图、条形图、饼图等。当然,Matplotlib包能做的不仅限于此,在绘制部分3D图形时也能够派上用场。至于为什么叫做matplotlib这个名字,很明显,这与MATLAB有着脱不开的干系。Matplotlib包在部分语言函数上,与MATLAB有着相似之处,因此,名字上有着相似之处也就不足为奇。接下来,我们就来看看其相关的函数和功能吧。
2
从折线图开始
任何事物都不及“简单”那样伟大;事实上,能够简单便是伟大。
——爱默生
首先我们打开Spyder(关于Spyder编译器及其更多的介绍,详见皮皮侠过往文章),在画图之前,我们需要将所要用的包导入python之中,在这里要说明一下,在作图时,我们需要一下numpy包的帮助,所以我们在导入Matplotlib包时同时也导入Numpy包。
接着,对于一副二维图来说,组成图案的无非一个个点,而对于一个个点来说,在一个二维平面上如果要对其进行刻画的话,就需要横坐标与纵坐标,这也是我们需要解决的第一步,也就是定义好图上点的横坐标与纵坐标。
我们采用Numpy包中的arange()函数来创建一个array类型的数组,并定义一个函数y。
有兴趣的读者可以思考一个问题:变量x明明是一串数,为什么却可以直接对里面的单个元素进行一定的计算赋值并将最后的一串结果直接赋值给y呢?
接下来,就是Matplotlib包发挥作用的时候啦,一个简单的函数plot(),将两串数组传入,就可以直接画出一个简洁的折线图。
作图结果如下:
当然,相信各位朋友一定会觉得这么简陋的一个折线图不能满足实际的应用需求。
事实上,我们可以通过其他函数对一个画出来的图进行进一步的加工。
首先,我们来为这个图填上横坐标轴以及纵坐标的标签。我们可以通过函数xlabel()以及ylabel(),来为我们的图填上横轴以及纵轴标签,示例代码如下:
由于Matplotlib并不是预置的支持中文和负号显示,所以如果想要用中文和负号作为表中的标题,请一定加上上文中两段有注释的代码。
代码结果如下:
当然,这样的处理还是显得有些寒碜,我们可以对其添加更多的元素使之更加丰富,示例代码如下:
作图结果为:
从结果可以看到,通过几个参数的引入,我们可以改变图内部线的形式以及颜色。除此以外,我们为图表添加上了标题,并且相较于之前的作图,我们调整了横轴以及纵轴标题字体的大小。标题的出现对应函数title()的添加。其余改变分别对应函数中所添加的几个新的参数。在xlabel(),ylabel()以及title()中,参数fontsize用来调整字体的大小,所填写的数字越大,在图中的字体大小越大。另外,参数color用来调整最后作图时图的颜色。
下图为Matplotlib中内置的颜色及其参数名字。
感兴趣的朋友可以在作图时挑选自己喜欢的颜色。另外,参数linestyle用来控制图内线条的形式,其预制的线条形式如下:
此外,我们还可以看到图上的线条里出现了一个个红色的小点。
这个变化是源自参数maker的添加。在matplotlib中,可以选择的样式还有如下几种:
3
不只是折线图
条条大路通罗马
——古谚
在实际的运用中,单一的折现图明显不够用,那么其他的常用图形例如散点图以及条形图要怎么样画呢?
事实上,得益于python简洁的语法,要想做出相应的图,只需要一行代码的转变。如果想要画一幅三点图,我们只需将最后行代码调用的函数改为scatter()即可使原本的折线图变为散点图。
结果如下:
若想做出简洁的条形图,也只需将最后一行代码改为调用的函数为hist(),并删除其中的maker函数,否则会报错(条形图中出现这些点不很奇怪吗)。
4
结束语
以上只是Matplotlib包的基础操作,事实上,python中还有其他的可视化包也十分优秀例如seaborn。对于Matplotlib而言,它的功能也不仅仅局限于此,它还可以实现多个子图同时呈现、图表保存等其他酷炫的操作。在未来,皮皮侠还会推出更多的文章,对Matplotlib包的其他功能做进一步的介绍。喜欢该篇文章的朋友可以关注皮皮侠,以免错过后续的介绍哦~~。

本期作者:黄伟儒
本期编辑校对:秦范
长按,关注数据皮皮侠

