pyplot.subplot 对比 pyplot.Subplot

pyplot.subplot vs pyplot.Subplot

我一直在通读 gridspec tutorial on matplotlib.org,我对 pyplot.Subplot(...)(大写 S)函数的用法有点困惑 "A Complex Nested GridSpec using SubplotSpec" 部分:

for i in range(16):
    inner_grid = gridspec.GridSpecFromSubplotSpec(
      3, 3, subplot_spec=outer_grid[i], wspace=0.0, hspace=0.0)
    a, b = int(i/4)+1, i % 4+1
    for j, (c, d) in enumerate(product(range(1, 4), repeat=2)):
        ax = plt.Subplot(fig, inner_grid[j])
        ax.plot(*squiggle_xy(a, b, c, d))
        ax.set_xticks([])
        ax.set_yticks([])
        fig.add_subplot(ax)

它似乎与 standard pyplot.subplot(...) function 不同,因为它采用不同的参数,但我找不到任何关于它的文档 - 我在 pyplot 文档中看不到它,我真的看不到google 因为 google 搜索不区分大小写。我想知道 Subplot(...) 采用什么论点,它 returns 是什么以及它与 subplot(...) 一般有何不同。如果这是一个愚蠢的问题,我们深表歉意;总的来说,我对 matplotlib 和 Python 还是很陌生。

不确定你是否真的需要这个,我查了一下:

pyplot 导入

from matplotlib.axes import Axes, Subplot

来自

https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/axes/_subplots.py

Subplot暴露喜欢

class SubplotBase(object)
...

# This is provided for backward compatibility
Subplot = subplot_class_factory()

pyplot.subplotpyplot.add_subplot 似乎是包装它的便利函数。

我建议暂时忽略 Subplot 的存在,并坚持在所有其他 matplotlib 示例中创建子图的方式。 所以在这种情况下,将行 ax = plt.Subplot(fig, inner_grid[j]) 替换为 ax = fig.add_subplot(inner_grid[j]) 并删除行 fig.add_subplot(ax).

示例的那部分看起来像

for i in range(16):
    inner_grid = gridspec.GridSpecFromSubplotSpec(
      3, 3, subplot_spec=outer_grid[i], wspace=0.0, hspace=0.0)
    a, b = int(i/4)+1, i % 4+1
    for j, (c, d) in enumerate(product(range(1, 4), repeat=2)):
        ax = fig.add_subplot(inner_grid[j])
        ax.plot(*squiggle_xy(a, b, c, d))
        ax.set_xticks([])
        ax.set_yticks([])

我不确定他们为什么要在这里设置一个 Subplot 只是为了之后将其添加到图中;当然代码是有效的,但它在某种程度上与文档其余部分的教学法相矛盾。