Ответ 1
Если на рисунке уже есть подзаголовок с ключом (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 возникает ошибка или undefined. Уникальный ключ, который был первоначально сгенерирован с использованием аргументов и ключевых слов, к первому вызову add_subplot, не обновляется. Поэтому, если вы хотите вернуть ось с вызовом add_subplot, вам нужно вызвать add_subplot с исходными аргументами и ключевыми словами. Для получения дополнительной информации следуйте этому отчету: https://github.com/matplotlib/matplotlib/issues/429
Теперь я предполагаю, что если вы измените какое-либо свойство подзаголовка после его создания с помощью вызова add_subplot, уникальный параметр не будет изменен. Поэтому просто используйте оригинальные аргументы и ключевые слова, и, надеюсь, это сработает.