Figure.add_subplot() vs pyplot.subplot()

В чем разница между add_subplot() и subplot()? Они оба, похоже, добавляют подзаговор, если их там нет. Я посмотрел документацию, но я не мог разобрать разницу. Это просто для того, чтобы сделать будущий код более гибким?

Например:

fig = plt.figure()
ax = fig.add_subplot(111)

против

plt.figure(1)
plt.subplot(111)

из учебников matplotlib.

Ответ 1

Если вам нужна ссылка на ax для последующего использования:

ax = fig.add_subplot(111)

дает вам одно:

plt.subplot(111)

вам нужно сделать что-то вроде:

ax = plt.gca()

Аналогичным образом, если вы хотите манипулировать фигурой позже:

fig = plt.figure()

дает вам ссылку сразу, а не:

fig = plt.gcf()

Получение явных ссылок еще более полезно, если вы работаете с несколькими подзадачами цифр. Для сравнения:

figures = [plt.figure() for _ in range(5)]

с:

figures = []
for _ in range(5):
    plt.figure()
    figures.append(plt.gcf())

Ответ 2

pyplot.subplot - это оболочка Figure.add_subplot с разным поведением. Создание субплота с помощью pyplot.subplot удалит любой ранее существующий субплот, который перекрывается с ним за пределами общей границы. Если вы не хотите использовать это поведение, используйте метод Figure.add_subplot или функцию pyplot.axes. Подробнее