浅谈matplotlib.pyplot与axes的关系
matplotlib.pyplot和axes的基本概念
在使用matplotlib绘图时,我们通常会导入pyplot模块。这个模块中包含了许多用于绘图的函数。而其中一个最常用的函数就是plot()函数了。然而,plot()函数的实现其实是基于另一个对象:axes对象。
我们可以将axes对象理解为一张画布,而plot()函数提供的则是在这张画布上绘制图形的各种方法。pyplot模块则是为了方便我们使用matplotlib提供的绘图方法而存在的。
创建axes对象
我们可以通过matplotlib的figure()函数创建画布,然后利用add_subplot()函数或者subplots()函数来创建axes对象。其中add_subplot()函数的用法如下所示:
import matplotlib.pyplot as plt
fig = plt.figure() # 创建画布
ax = fig.add_subplot(1,1,1) # 创建axes对象
subplots()函数用法如下:
import matplotlib.pyplot as plt
fig, axes = plt.subplots() # 创建画布和axes对象
使用axes对象进行绘图
在创建axes对象之后,我们可以调用它的方法来进行绘图。例如,我们可以使用plot()函数来绘制一条曲线:
import matplotlib.pyplot as plt
fig = plt.figure() # 创建画布
ax = fig.add_subplot(1,1,1) # 创建axes对象
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
ax.plot(x, y) # 在axes对象上绘制曲线
plt.show() # 显示图形
这段代码中,我们通过plot()函数在创建的axes对象上绘制了一条曲线。最后通过show()函数显示图形。
pyplot的辅助作用
在使用matplotlib进行绘图时,我们通常会在pyplot模块中调用一些辅助函数,如xlabel()、ylabel()、title()等来设置图形的属性。这些函数和axes对象实际上是有联系的。当我们在pyplot模块中调用这些函数时,实际上是调用了axes对象的对应方法。例如:
import matplotlib.pyplot as plt
fig = plt.figure() # 创建画布
ax = fig.add_subplot(1,1,1) # 创建axes对象
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
ax.plot(x, y) # 在axes对象上绘制曲线
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y') # 设置y轴标签
plt.title('matplotlib demo') # 设置标题
plt.show() # 显示图形
这里使用pyplot模块的xlabel()、ylabel()、title()函数分别修改了axes对象的对应属性。
axes对象的嵌套使用
在实际绘图时,我们通常会在一张画布上绘制多幅图形,这时需要使用多个axes对象。而在绘制多幅图形时,常常需要使用到axes对象的嵌套功能。
在使用add_subplot()函数或subplots()函数创建axes对象时,我们通常会指定行数和列数,再通过参数指定当前axes对象在整个画布中的位置。这些参数分别为:行数、列数、当前axes对象的位置。
例如,我们可以创建4个axes对象,其中第1、2个在第1行,第1、2列;第3、4个在第2行,第1、2列:
import matplotlib.pyplot as plt
fig = plt.figure() # 创建画布
ax1 = fig.add_subplot(2, 2, 1) # 创建第1个axes对象
ax2 = fig.add_subplot(2, 2, 2) # 创建第2个axes对象
ax3 = fig.add_subplot(2, 2, 3) # 创建第3个axes对象
ax4 = fig.add_subplot(2, 2, 4) # 创建第4个axes对象
plt.show() # 显示图形
这里的行数和列数都为2,所以整个画布可以被分成4个部分。而在用add_subplot()函数创建axes对象时,我们指定的数值表示这个axes对象在画布中的位置。例如,第2个axes对象要放在第1行、第2列的位置上,所以它的位置参数为2。
总结
matplotlib的处理过程中,pyplot模块和axes对象都非常重要。pyplot提供了各种函数来方便我们绘图,而这些函数的执行实际上是基于axes对象进行的。在实际绘图时,我们通常会在画布上创建多个axes对象来绘制多幅图形,而axes对象的嵌套使用也非常重要。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈matplotlib.pyplot与axes的关系 - Python技术站