假设大家想画一幅素描:
同理,使用matplotlib库绘制的图形并非只有一层结构 。
方法一:自定义绘图区域
下面的代码展示了如何使用matplotlib来绘制一个简单的图表。我们将一步步地讲解每一行代码的功能,帮助学生理解整个过程。
import numpy as np
import matplotlib.pyplot as plt
# 准备数据
data = np.array([1, 2, 3, 4, 5])
# 创建代表画布的Figure 类的对象fig
fig = plt.figure()
# 在画布fig上添加坐标系风格的绘图区域ax
ax = fig.add_subplot()
# 绘制图表
ax.plot(data)
# 展示图表
plt.show()
输出结果:
第一步:导入需要的库
import numpy as np
import matplotlib.pyplot as plt
•import numpy as np:这行代码导入了numpy库并为它起了一个简短的别名np。numpy是一个非常常用的数学库,可以帮助我们更高效地处理数值计算,尤其是数组操作。在这段代码中,numpy主要用来创建数据。
•import matplotlib.pyplot as plt:这行代码导入了matplotlib.pyplot模块,并为它起了一个别名plt。matplotlib是一个用于绘图的库,pyplot是它的一个子模块,提供了简单的接口来绘制各种类型的图表。
第二步:准备数据
data = np.array([1, 2, 3, 4, 5])
• 这里,我们使用numpy创建了一个简单的一维数组data,包含了 5 个数字:[1, 2, 3, 4, 5]。这些数据将用于绘制图表。
第三步:创建画布
fig = plt.figure()
• 这行代码使用plt.figure()创建了一个Figure对象,表示整个画布。画布是你用来绘制图形的区域。在此之前并没有实际绘制任何内容,只是创建了一个空白的画布对象。
第四步:添加绘图区域
ax = fig.add_subplot()
• 这行代码在我们刚刚创建的fig画布上添加了一个坐标系风格的绘图区域ax。add_subplot()方法默认在画布上添加一个简单的坐标系(即 X 轴和 Y 轴),并为后续的绘图提供空间。
• 如果你在未来想要在同一个画布上添加多个子图,可以通过给add_subplot()方法传入多个参数来定义多个绘图区域,比如:fig.add_subplot(1, 2, 1)表示创建一个 1 行 2 列的布局,在第一个位置添加一个图表。
第五步:绘制图表
ax.plot(data)
• 这行代码实际绘制了数据data上的图表。ax.plot(data)是绘制一条折线图(默认行为),数据data中的每个点都会在图表中显示出来,并通过线条将相邻的点连接起来。
•ax.plot()方法的功能非常强大,你可以通过传入更多的参数来控制图表的样式(比如线条的颜色、类型、宽度等),但在这个简单的示例中,我们只使用了默认设置。
第六步:展示图表
plt.show()
• 这行代码是用来显示图表的。当你调用plt.show()时,matplotlib会打开一个图形窗口,显示你绘制的图表。在此之前,所有的绘图操作都只是添加到画布中,直到调用show(),图表才会被实际渲染出来。
输出结果
执行上述代码后,学生将看到一个非常简单的折线图,X 轴是数据的索引(从 0 到 4),Y 轴是数据的实际值(即[1, 2, 3, 4, 5])。
总结
• 我们首先导入了numpy和matplotlib库,准备好了数据。
• 然后创建了一个画布(fig)和一个绘图区域(ax)。
• 使用ax.plot()绘制了数据的折线图。
• 最后,通过plt.show()展示了图表。
这个过程展示了如何使用matplotlib快速绘制一个简单的图表,帮助学生理解绘图的基础步骤。
方法二:默认绘图区域
以下是另一个简化版本的代码,它与前面的代码效果相同,但在写法上有所不同。我们将逐步讲解这段代码的含义:
import numpy as np
import matplotlib.pyplot as plt # 导入 pyplot 模块
# 准备数据
data = np.array([1, 2, 3, 4, 5])
# 在当前画布的绘图区域中绘制图表
plt.plot(data)
# 展示图表
plt.show()
输出结果:
第一步:导入需要的库
import numpy as np
import matplotlib.pyplot as plt
•import numpy as np:导入numpy库,numpy是用来处理数值计算和数组操作的工具,功能非常强大。我们使用numpy来创建数据。
•import matplotlib.pyplot as plt:导入matplotlib.pyplot模块,并为其指定别名plt。pyplot是matplotlib的一部分,它提供了一系列绘图功能。通过plt,我们可以简洁地创建各种类型的图表。
第二步:准备数据
data = np.array([1, 2, 3, 4, 5])
• 这行代码创建了一个简单的numpy数组data,包含了 5 个整数:[1, 2, 3, 4, 5]。这些数据将作为折线图的 Y 轴数据。
第三步:绘制图表
plt.plot(data)
• 在这行代码中,plt.plot(data)直接绘制了数据data的折线图。与之前的代码不同,这里没有显式创建画布fig和坐标区域ax,而是直接使用了plt来绘制图表。
• 在这个简化版本中,会自动创建一个画布和坐标区域。如果你没有特别指定画布和坐标区域,它会默认使用一个 "隐式" 的画布和坐标区域来进行绘图。实际上,plt.plot(data)也会自动在内存中创建一个画布和坐标区域,只不过我们没有显式地定义它们。
第四步:展示图表
plt.show()
• 这行代码是用来展示图表的。当调用plt.show()时,matplotlib会弹出一个窗口来显示已经绘制的图表。
区别和总结
1.简化的代码:与前一个示例相比,这段代码省略了显式创建画布(fig)和坐标区域(ax)的步骤,直接通过plt创建和管理这些对象。在大多数情况下,这种简化方式足够用,适用于简单的绘图任务。
2.隐式创建画布和坐标区域:在这个简化版本中,plt.plot(data)自动创建了画布和坐标区域,因此不需要单独调用fig = plt.figure()和ax = fig.add_subplot()。
3.代码更加简洁:对于初学者,直接使用plt.plot()和plt.show()可以让代码更简洁易懂,适合快速展示数据的趋势。
总体来说,虽然两段代码实现的效果完全一样,简化版的代码更适合一些简单的情景。而在需要更高灵活性和更多绘图控制时,第一种写法会更有优势,因为它显式地控制了图形的每个细节。
领取专属 10元无门槛券
私享最新 技术干货