Matplotlib 面向对象的接口
虽然用matplotlib.pyplot模块很容易快速生成图,但建议使用面向对象的方法,因为它能给你的图带来更多的控制和定制。大多数函数也可以在matplotlib.axes.Axes类中使用。
使用更正式的面向对象的方法背后的主要想法是创建图形对象,然后只是调用该对象上的方法或属性。这种方法有助于更好地处理画布上有多个图的情况。
在面向对象的界面中,Pyplot只用于少数功能,如图形创建,用户明确地创建并跟踪图形和坐标轴对象。在这个层面上,用户使用Pyplot来创建图形,通过这些图形,可以创建一个或多个坐标轴对象。这些坐标轴对象随后被用于大多数绘图操作。
首先,我们创建一个图形实例,提供一个空画布。
fig = plt.figure()
现在将轴添加到图形中,add_axes()方法需要一个包含 4 个元素的列表对象,分别对应图形的左、下、宽和高。每个数字必须在 0 和 1 之间:
ax=fig.add_axes([0,0,1,1])
设置 x 轴和 y 轴的标签以及标题:
ax.set_title("sine wave") ax.set_xlabel('angle') ax.set_ylabel('sine')
调用轴对象的 plot() 方法。
ax.plot(x,y)
如果你使用的是 Jupyter notebook,则必须发出 %matplotlib 内联指令; pyplot 模块的 otherwistshow() 函数显示绘图。
考虑执行以下代码:
from matplotlib import pyplot as plt import numpy as np import math x = np.arange(0, math.pi*2, 0.05) y = np.sin(x) fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.plot(x,y) ax.set_title("sine wave") ax.set_xlabel('angle') ax.set_ylabel('sine') plt.show()
上面的代码行生成以下输出:
同样的代码在 Jupyter notebook 中运行时显示的输出如下所示: