绘制子图
子图可以在一个窗口中显示多张图表.
矩阵式布局
矩阵式布局相关API:mp.figure()创建一个窗口,然后mp.subplot(m,n,p)设置子图的数量。m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。下面的例子是按顺序在子图上画出对应的数字。
import matplotlib.pyplot as mp
mp.figure('Subplot A', facecolor='lightgray')
for i in range(9):
mp.subplot(3,3,i+1)
mp.xticks([])
mp.yticks([])
mp.text(0.5, 0.5, i+1, ha='center',
va='center', size=36, alpha=0.5)
mp.tight_layout()
mp.show()
网格式布局
网格式布局支持单元格的合并.
这里要用到一个新的函数matplotlib.gridspec,gridspec函数指定将放置子图的网格的几何形状,需要设置网格的行数和列数。以及子图的布局参数可以调整,如下例子:
gs = mg.GridSpec(3, 3)将窗口分成3x3的网格,mp.subplot(gs[0, :2])然后选择第一行的前两个格子合并,然后在格子中写了个1。
import matplotlib.pyplot as mp
import matplotlib.gridspec as mg
mp.figure('Grid Layout', facecolor='lightgray')
gs = mg.GridSpec(3, 3)
mp.subplot(gs[0, :2])
mp.text(0.5, 0.5, '1', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.tight_layout()
mp.show()
完整代码及效果
还可以类似这样的操作,将整个图像绘制完整,代码和效果均如下图所示:
"""
网格式布局
"""
import matplotlib.pyplot as mp
import matplotlib.gridspec as mg
mp.figure('Grid Layout', facecolor='lightgray')
gs = mg.GridSpec(3, 3)
mp.subplot(gs[0, :2])
mp.text(0.5, 0.5, '1', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.subplot(gs[:2, 2])
mp.text(0.5, 0.5, '2', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.subplot(gs[1, 1])
mp.text(0.5, 0.5, '3', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.subplot(gs[1:, 0])
mp.text(0.5, 0.5, '4', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.subplot(gs[2, 1:])
mp.text(0.5, 0.5, '5', ha='center',
va='center', size=36)
mp.xticks([])
mp.yticks([])
mp.tight_layout()
mp.show()