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 inline 指令; 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 中运行相同的代码会显示如下所示的输出 −