本文最后更新于 417 天前,其中的信息可能已经过时,如有错误请发送邮件到 wuxianglongblog@163.com
相对于基于函数的可视化操作,Matplotlib 提供了更灵活的方式进行可视化操作 —— 基于对象的方法进行操作。
事实上,对 Matplotlib 来说,每张图都是一个 Figure 对象,可以通过 plt.figure()
函数产生。Figure 对象可以通过.add_axes()
方法向图中添加 Axes 对象。Axes 对象可以进行绘图操作,调用它的.plot()
方法相当于调用 plt.plot()
函数。
例如:
| from matplotlib import pyplot as plt |
| import numpy as np |
| |
| x = np.linspace(0, 5, 10) |
| y = x ** 2 |
| |
| fig = plt.figure() |
| |
| axes = fig.add_axes([0.1, 0.1, 0.8, 0.8]) |
| axes.plot(x, y, 'r') |
| |
| plt.show() |
绘制多张子图时,可以直接使用 plt.subplots()
函数来同时得到 Figure 对象和子图对应 Axes 对象数组:
| import numpy as np |
| from matplotlib import pyplot as plt |
| |
| def f(t): |
| return np.exp(-t) * np.cos(2*np.pi*t) |
| |
| t1 = np.arange(0.0, 5.0, 0.1) |
| t2 = np.arange(0.0, 5.0, 0.02) |
| |
| fig, axes = plt.subplots(2, 1) |
| axes[0].plot(t1, f(t1), 'bo', t2, f(t2), 'k') |
| axes[1].plot(t2, np.cos(2*np.pi*t2), 'r--') |
| plt.show() |
也可以调用两次.add_axes () 方法:
| from matplotlib import pyplot as plt |
| import numpy as np |
| |
| def f(t): |
| return np.exp(-t) * np.cos(2*np.pi*t) |
| |
| t1 = np.arange(0.0, 5.0, 0.1) |
| t2 = np.arange(0.0, 5.0, 0.02) |
| |
| fig = plt.figure() |
| |
| |
| axes = fig.add_axes([0.1, 0.5, 0.8, 0.3]) |
| |
| axes.plot(t1, f(t1), 'bo', t2, f(t2), 'k') |
| |
| |
| axes = fig.add_axes([0.1, 0.1, 0.8, 0.3]) |
| axes.plot(t2, np.cos(2*np.pi*t2), 'r--') |
| |
| plt.show() |