matplotlib的原理或者说基础逻辑是,用Artist对象在画布(canvas)上绘制(Render)图形。
而Artist对象又分为两类:primitives
和containers
。
primitive
是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等。
container
是容器,即用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis。
所以说matplotlib的使用流程先要创建一个figure对象,可以理解为画布,然后在画布上画上axes(坐标系),坐标系是一种容器在容器中,可以添加primitive(要素)。
值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。
figure容器
由于matplotlib绘画的逻辑是在figure,axes等容器上添加primitives。
atplotlib.figure.Figure
是Artist
最顶层的container
-对象容器,它包含了图表中的所有元素。一张图表的背景就是在Figure.patch
的一个矩形Rectangle
。
当我们向图表添加Figure.add_subplot()
或者Figure.add_axes()
元素时,这些都会被添加到Figure.axes
列表中。
fig=plt.figure() #创建一个figure容器
sub=fig.add_subplot(2,1,1)#创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot
x=np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*x)#创建数据
line = sub.plot(x, s, color='blue', lw=2)
基本元素 - primitives
像曲线-Line2D,矩形-Rectangle,图像-image 都是比较常见的基本元素
1.Line2D
在matplotlib中曲线的绘制,主要是通过类 matplotlib.lines.Line2D
来完成的。
它的构造函数为:
class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth=None, markeredgecolor=None, markerfacecolor=None, markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs)
常用的有
-
xdata:需要绘制的line中点的在x轴上的取值,若忽略,则默认为range(1,len(ydata)+1)
<