为更好理解Matplotlib,本文总结下Matplotlib的几个基本组成元素,尽量知其然,亦知其所以然;
Figure:整个交互图像就是一个Figure对象,可以创建多个Figure对象。
在每个Figure里,包含一个canvas(背景画布),画布上可以由一个或多个Axes对象(至少有一个有效的),每个Axes对象都是一个拥有自己坐标系统的绘图区域。
Axes: Axes包含两个(或3D的三个)Axis对象(注意Axes和Axis之间的差异),它们负责数据限制,即坐标轴(可通过Axes方法 set_xlim()和set_ylim()来设置)。每个Axes都有一个标题(set_title()设置),一个x标签(set_xlabel()设置)和一个y标签(set_ylabel()设置)。
给定的图形Figure可以包含许多Axes,但给定的Axes对象只能在一个Figure中;
Axis: 负责生成坐标轴, 刻度线(轴上的标记)和ticklabels(标记刻度线的字符串)。
刻度线的位置由Locator对象确定,ticklabel字符串由Formatter格式化。 正确的定位器和格式化器的组合可以非常精确地控制刻度位置和标签。
Artist: 以上所有对象都来自Artist基类;
plot():往Axes绘图区域填数据,仅仅往内存中填数据,并不及即时渲染;
当我们调用plot时,matplotlib会调用gca()获取当前的axes绘图区域,而且gca反过来调用gcf()来获得当前的figure。如果figure为空,它会自动调用figure()生成一个figure, 严格的讲,是生成subplots(111)。
show(): 显示交互图像,即Figure对象;一次性从内存提取图像数据(包含前面所有plot的效果)
subplot():在一个Figure中创建子图;
以上所有常见绘图元素对应关系如下图:
其中:title为图像标题,Axis为坐标轴, Label为坐标轴标注,Tick为刻度线,Tick Label为刻度注释。各个对象关系可以梳理成以下内容: