4.9Python数据处理篇之Matplotlib系列(九)---子图分布
目录
前言
前面我们已经知道,一个figure可以画一张画布,今天我们讲的是在同一个figure里画多张子图,我们要用的是subplot与subplot2grid()方法来绘制子图。
(一)subplot()方法
1.语法说明
subplot是均匀的分割绘图区,来进行子图的放置。
- 需要注意的是subplot并不适合来绘制跨行或者跨列的子图,跨行与跨列的子图绘制,交给subplot2grid()更容易完成。
- 如果分割的图只是个位数时,那么原本的表示方法:(2,2,1),与(221)等效,其他的不可如此。
2.源代码
# 导入模块
import matplotlib.pyplot as plt
import numpy as np
# 数据
x = np.linspace(-10, 10, 100)
y1 = x
y2 = x**2
y3 = 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()