使用matplotlib这个模组,我们就可以摆脱微软Office的传统画图方法。以此带来的新画图方法就是通过数学式的方法来画图。更加有用的是,我们可以方便地自定义图表,画出更好看、更美观的效果。
安装完成之后,你会在开始菜单中的Anaconda文件夹中看到Spyder这个应用,我们打开这个应用,迎面而来的就是一个代码编辑器,我们就要在这个代码编辑器内写出所有画图的代码。
打开Spyder,我们就会看到屏幕的左边是代码编辑区域,屏幕的左下角则是输出区域。在这个步骤,我们将主要操作屏幕的左边,也就是代码编辑区域,来输入我们画图用到的代码。
编辑代码的第一步,就是告诉我们要写的程序要包括什么模组。简单来说我们就是要告诉程序,我们要在程序内包括什么功能。首先我们输入以下代码:
importmatplotlib.pyplotaspltimportnumpyasnp这两行代码中,import的意思就是,我们要导入两个模组,一个叫做matplotlib.pyplot,还有一个叫做numpy。matplotlib.pyplot主要负责画图功能。numpy则负责高级数学的功能,比如解释正弦、余弦函数,Python本身是不能通过一句简单的函数来计算某个角度的正弦的,需要外部库来支持。
在这里,as的意思是定义一个别名。在之后的程序中,当我们需要召唤matplotlib.pyplot这个程序的时候,我们只需要打出plt即可,而无需再打出原来这么一长串。同理,numpy在这里也被取了np的别名。
在以上我们做完程序的铺垫之后,我们就可以正式开始编写画图的代码了。首先,我们要定义X的域,添加以下代码表示:
x=np.linspace(-1,1,256)在这行代码中,我们定义了X轴的最小值和最大值,括号中第一个数字-1是X轴的最小值,括号中的第二个数字1则是X的最大值。256则是取样密度,这个参数不用改变。
目前这部分很简单,但是matplotlib强大的地方在于可以利用其他的常量来定义边界,请看下面的例子:
x=np.linspace(-np.pi,np.pi,256)在这个例子中,这行代码会替换上面那行代码,我们利用了numpy模组,使X轴的最小值变为-π,而最大值变成了π,从而允许我们更直观地画出三角函数的图像。
接下来我们开始定义Y轴,假如我们想画出sin(x)的图像,我们只需要接着输入:
y=np.sin(x)在这里,sin的前面被加了np.,是因为Python本身不支持正弦函数运算,所以需要注明使用np模组才能使用。
又或者,我们想画出平方的图像,我们可以替换上面的代码为:
X和Y的定义完成了,接下来,我们开始指令matplotlib来画出图像。
这步非常简单,只需要在代码的最后添加一行代码:
plt.plot(x,y)最后,点击工具栏上的绿色箭头,就可以运行这段代码。运行完毕之后,你就可以在右下角的窗口上看到你画出的图像。右键点击图像,即可保存。
现在我们来开始介绍matplotlib最强大的地方:自定义。为什么我们要使用matplotlib来画图?就是为了能够自定义图表中的一些元素。在上边的例子中,我们使用了np.sin()函数来画出正弦图像。但是,matplotlib默认为我们使用了数字作为X轴的坐标轴,这显然不是最理想的标记方法,那么我们接下来学习怎样自定义X轴坐标轴。在plt.plot(x,y)前加入以下代码。
如果你不需要用文字表达而仅仅需要使用简单的数字,则不需要填写第二个方括号。这里我们用Y轴举例:
plt.yticks([-1,-0.5,0,0.5,1])这样,Y轴就只会显示方括号内的五个数字。
添加标题非常简单,只需要加入一行代码,确保代码在import语句以下,plt.plot(x,y)以上:
上图中我们可以看到,正弦函数是蓝色,X平方函数则是红色,这些颜色的配置归功于第三个参数中的第一个字符:b和r,分别表示blue和red。接下来的字符则表示线条的风格,--和-.分别表示虚线和虚点线。需要注意的是,这里没有严格的顺序,所以即使你写成--b,也是没有问题的。
可能大家已经注意到了:上面我们输出的函数图像,其实是非常不清晰的。那么现在我们来调整图像。确保以下代码位置在import语句下第一行。
plt.figure(figsize=(3,5),dpi=300)大家应该已经注意到了,plt.figure()内多了两个参数。其中,figsize的值定义了图像的大小,第一个数字代表宽度为三英尺,第二个数字代表宽度为五英尺。dpi的值则很明显,代表了图像的DPI。这些值您可以根据自己的实际需求进行修改。
可能也有一些读者会问:为什么不用其他的软件?一方面是matplotlib自定义功能强。另一方面,虽然其他的软件拥有图形化的界面来简化画图的过程,但是我更喜欢用代码来解决问题,算是我个人的小癖好之一。