Из документации matplotlib :
Если у фигуры уже есть подзаговор с ключом (args, kwargs), то он просто сделает этот подзаговор текущим и вернет его.
Вот пример:
import matplotlib.pyplot as plt
fig = plt.figure()
for vplot in [1,2,3]:
ax = fig.add_subplot(3,1,vplot)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(3,1,2)
ax_again.annotate("The middle one",xy=(7,5),xytext=(7,5))
plt.show()
Средний участок вызывается снова, чтобы его можно было аннотировать.
Что, если я устанавливаю фон с помощью своего исходного вызова, нужно ли мне устанавливать его снова, когда я получаю вспомогательный сюжет во второй раз?
Да. Аргументы и ключевые слова для исходного вызова используются для создания уникального идентификатора. Таким образом, чтобы рисунок снова сгенерировал этот уникальный идентификатор, вам необходимо снова передать те же аргументы (определение сетки, положение) и ключевые слова. Например:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(2,1,1,axisbg='red')
ax.plot(range(10),range(10))
ax = fig.add_subplot(2,1,2)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(2,1,1,axisbg='red')
ax_again.annotate("The top one",xy=(7,5),xytext=(7,5))
plt.show()
Что если я использую ax_again.change_geometry()
?
Вы могли бы подумать, что change_geometry, например, с 312 на 422, изменит то, как вы используете add_subplot, но это не так. Кажется, есть ошибка или неопределенное поведение при вызове change_geometry. Уникальный ключ, который был первоначально создан с использованием аргументов и ключевых слов для первого вызова add_subplot, не обновляется. Поэтому, если вы хотите вернуть ось с помощью вызова add_subplot, вам нужно вызвать add_subplot с исходными аргументами и ключевыми словами. Для получения дополнительной информации, следуйте этому отчету о проблеме:
https://github.com/matplotlib/matplotlib/issues/429
На данный момент я предполагаю, что если вы измените какое-либо свойство подплота после его генерации с помощью вызова add_subplot, уникальное значение не будет изменено. Так что просто используйте оригинальные аргументы и ключевые слова, и, надеюсь, это сработает.