目录
目录
前言
前面我们已经知道,一个figure可以画一张画布,今天我们讲的是在同一个figure里画多张子图,我们要用的是subplot与subplot2grid()方法来绘制子图。
(一)subplot()方法
==1.语法说明==
subplot是均匀的分割绘图区,来进行子图的放置。
- 需要注意的是subplot并不适合来绘制跨行或者跨列的子图,跨行与跨列的子图绘制,交给subplot2grid()更容易完成。
- 如果分割的图只是个位数时,那么原本的表示方法:(2,2,1),与(221)等效,其他的不可如此。
==2.源代码==
# 导入模块import matplotlib.pyplot as pltimport numpy as np# 数据x = np.linspace(-10, 10, 100)y1 = xy2 = x**2y3 = x**3# 创建一个figure窗体fig = plt.figure(num="子图得比较")fig.suptitle("draw some subplot")# 绘制第一个子图ax1 = plt.subplot(2, 2, 1)plt.plot(x, y1)ax1.set_title("y1 = x")# 绘制第二个子图ax2 = plt.subplot(222)plt.plot(x, y2)ax2.set_title("y2=x**2")# 绘制第三个子图ax3 = plt.subplot(223)plt.plot(x, y3)ax3.set_title("y3=x**3")# 展示plt.show()
==3.输出效果==
(二)subplot2grid方法
==1.语法说明==
subplot2grid((分割),(起始位置),colspan=列宽, rowspan=行宽)
例如:plt.subplot2grid((3, 3), (1, 0), colspan=2, rowspan=1),
将整块figure画布分成3行3列的格子,从第2行,第一列画起该子图,列宽占两格,行宽占一格。
像figure一样,定义subplot2grid()子图以后,后续的操作都在该子图上,直到另一个子图的出现。
==2.源代码==
import matplotlib.pyplot as plt# 创建画布plt.figure()# 创建子图ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3, rowspan=1)ax1.plot([1, 2], [1, 2])ax1.set_title("No1")ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2, rowspan=1)ax3 = plt.subplot2grid((3, 3), (1, 2), colspan=2, rowspan=2)ax4 = plt.subplot2grid((3, 3), (2, 0), colspan=1, rowspan=1)ax5 = plt.subplot2grid((3, 3), (2, 1), colspan=1, rowspan=1)plt.show()