📜  matplotlib 面向对象 - Python (1)

📅  最后修改于: 2023-12-03 15:32:51.823000             🧑  作者: Mango

Matplotlib 面向对象 - Python

Matplotlib是一个用于图形绘制的Python包。Matplotlib提供了各种绘图方法,如条形图、散点图和线图。Matplotlib提供了两种绘图方法:面向状态的绘图和面向对象的绘图。本文将介绍Matplotlib面向对象的绘图方法。

面向状态的绘图

Matplotlib的面向状态的绘图方法涉及到在图形对象上循环遍历,并在每个点上绘制数据。这种方法的主要问题是,在图形变得很复杂时会变得难以管理。因为必须跟踪每一个图形对象,这让代码难以阅读并且难以维护。

以下是一个面向状态的绘图示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

plt.plot(x, np.sin(x), '-g', label='sin(x)')
plt.plot(x, np.cos(x), ':b', label='cos(x)')
plt.axis('equal')
plt.legend()
plt.show()

上面的代码将生成一个包含正弦和余弦曲线的图形。

面向对象的绘图

Matplotlib的面向对象的绘图方法涉及到创建Figure(图形)和Axes(轴)对象,并在这些对象上绘制数据。这种方法的主要优点是:在添加新数据时,无需重复制定原始数据,而只需要添加一个新的数据集即可。

以下是一个面向对象的绘图示例:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.linspace(0, 10, 100)

ax.plot(x, np.sin(x), '-g', label='sin(x)')
ax.plot(x, np.cos(x), ':b', label='cos(x)')

ax.axis('equal')
ax.legend()

plt.show()

上面的代码将生成与前面的面向状态的代码相同的图形。但是,注意到这个版本的代码,我们在创建Figure和Axes对象时,使用了plt.subplots()函数。对于每个轴,我们使用ax.plot()方法绘制数据。

总之,Matplotlib的面向对象的方法是一种更加强大和灵活的绘图方法,具有容易维护和扩展的优点。