Matplotlib 多图绘制

在本章中,我们将学习如何在同一画布上创建多个子图。

subplot() 函数返回在给定的网格位置的轴对象。其语法如下

plt.subplot(subplot(nrows, ncols, index)

以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1...N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

例如, subplot(2, 3, 3) 和 subplot(233) 都在当前图形的右上角创建一个 Axes,占据图形高度的一半和图形宽度的三分之一。

创建子图将删除除共享边界外与其重叠的任何预先存在的子图。

from matplotlib import pyplot as plt
import numpy as np
import math
import matplotlib

matplotlib.rcParams['axes.unicode_minus'] = False

fig = plt.figure("迹忆客 - jiyik.com")
plt.plot([3, 6, 9])
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='c')
plt.plot(range(12))
plt.show()

上面代码生成的图形如下所示

matplotlib 多图绘制

图形类的 add_subplot() 函数不会覆盖现有的绘图

import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.sans-serif'] = ['KaiTi']
matplotlib.rcParams['axes.unicode_minus'] = False

fig = plt.figure("迹忆客 - jiyik.com")
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='c')
ax2.plot([1,2,3])

plt.show()

运行结果如下

matplotlib-多图绘制2

我们可以通过在同一图形画布中添加另一个轴对象来实现在同一图形中添加图。

import matplotlib.pyplot as plt
import numpy as np
import math
import matplotlib

matplotlib.rcParams['axes.unicode_minus'] = False

x = np.arange(0, math.pi * 2, 0.05)
fig = plt.figure("迹忆客 - jiyik.com")
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])  # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3])  # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x, np.cos(x), 'r')
axes1.set_title('正弦曲线')
axes2.set_title("余弦曲线")
plt.show()

图形绘制如下

matplotlib-多图正余弦曲线

查看笔记

扫码一下
查看教程更方便