Matplotlib绘图基础
“一图胜千言”,在分析数据时,将其有图展示出来,人们可以更高效地从探寻其中的规律。Matplotlib就是python提供的绘图工具。如下图所示,前三行,我们首先引入必要的依赖,第4、5行定义变量并给它们赋值,第7行定义如何绘制,第8行将其显示到窗口中。
在Python中万物皆是对象,Matplotlib”绘图”及“所绘对象”都是对象,Matplotlib能绘制的对象有两类,一类是基本元素(primitives)类,如Text、Line2D、Rectangle等;另一类是容器(container)类如:Figure、Axes、Axis。Python中以“面向对象”的思想绘制图像,第一步:创建Figure对象如下图所示。它类似于一张画布,可以在画布上创建其它对象。
接下来,就可以通过此对象调用相应的方法,实现在画布上画图(添加对象)的操作。如下图所示,
通过fig.add_axes()方法我们在画布上创建了一个Axes对象,由于它是一个容器,故它还可以包含其他东西。定义变量以获得数据,然后调用Axes对象的plot方法绘图,如下图所示。
最后,我们还可以调用Figure的savefig()方法将图像保存到磁盘。
设置坐标系
1.坐标网格
当绘图程序使用“MATLAB”风格时,一般通过plt操作各种绘图相关的方法和属性,而”面向对象”风格通常使用figgure对象调用方法创建的对象(下图中的ax对象);但使用二者添加网格的方法是一样的,都是plot()方法。
如下图所示
2.坐标轴
可以根据需求自行调整坐标轴的范围和轴标题,如下图红色框中代码所示,分别设置了x轴和y轴的标题与轴的范围。此外,我们还可以通过使用ax.set_xticks()设置x轴刻度,通过ax.yaxis.set_major_locator(plt.NullLocator())设置y轴不显示刻度(线和文本)。通过ax.xaxis.set_major_formatter(plt.NullFormatter())设置x轴不显示文本(标识)但显示刻度线。
3.分区
使用plt.plot()绘图,画布上只有一个坐标系,若是想要有多个坐标系,则可以使用plt.subplots();如下图所示,创建了一个2*3的分区,同一行的分区,共用y轴的文本,同一列的分区,共用轴的文本。从左上到右下,坐标分别为(0,1),(0,2),(0,3),(1,1),(1,2),(1,3).
而plt.subplot()可以得到分区中的一个子图。如下图所示。与上面不同的是,它的编号是从1开始的,而不是0;
此外,我们还可以使用fig.add_axes()方法,通过创建Axes对象来等同于创建一个新的坐标系。如下图所示。
plt.GridSpec()可以实现更灵活地创建分区,如下图所示,plt.GridSpec(3,3,hspace=0.3,wspace=0.3)将画布分成3行3列的网格,hspace和wspace分别是距左侧和上侧的偏移量,然后,向plt.subplot()传入g所引用对象的切片。