>>> from env_helper import info; info()
页面更新时间: 2023-06-30 23:21:29
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-9-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

4.2. 绘制多轴图

一个绘图对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。 上面的第一个例子中,绘图对象只包括一个轴,因此只显示了一个轴(子图)。我们可以使用 subplot() 函数快速绘制有多个轴的图表。 subplot() 函数的调用形式如下:

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为 numRows行 * numCols列 个子区域,然后按照从左到右, 从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。 如果numRows,numCols和plotNum这 三个数都小于10的话,可以把它们缩写为一个整数, 例如subplot(323)和subplot(3,2,3)是相同的。 subplot在plotNum指定的区域中创建一个轴对象。 如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。 下面的程序创建3行2列共6个轴,通过axisbg参数给每个轴设置不同的背景颜色。

>>> %matplotlib inline
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> for idx, color in enumerate("rgbyck"):
>>>     print(idx,  color)
>>>     # fig, ax = plt.subplots(320+idx+1)
>>>     plt.subplot(320 + idx  + 1, facecolor=color)
>>>
>>>     # fig, ax = plt.subplots(320+idx+1, facecolor=color)
>>>     # 2) hex string:
>>>     # ax.set_facecolor('#eafff5')
>>>
>>>     # plt.axes()
>>> plt.show()
0 r
1 g
2 b
3 y
4 c
5 k
_images/sec02_draw_5_1.png

用subplot函数将Figure分为六个子图区域

如果希望某个轴占据整个行或者列的话,可以如下调用subplot:

>>> plt.subplot(221) # 第一行的左图
>>> plt.subplot(222) # 第一行的右图
>>> plt.subplot(212) # 第二整行
>>> plt.show()
_images/sec02_draw_7_0.png

将Figure分为三个子图区域

当绘图对象中有多个轴的时候,可以通过工具栏中的Configure Subplots按钮,交互式地调节轴之间 的间距和轴与边框之间的距离。如果希望在程序中调节的话,可以调用subplots_adjust函数,它有 left, right, bottom, top, wspace, hspace等几个关键字参数,这些参数的值都是0到1之间的小数,它 们是以绘图区域的宽高为1进行正规化之后的坐标或者长度。