Как правило, вы просто передаете экземпляр осей функции.
Например:
import matplotlib.pyplot as plt
import numpy as np
def main():
x = np.linspace(0, 6 * np.pi, 100)
fig1, (ax1, ax2) = plt.subplots(nrows=2)
plot(x, np.sin(x), ax1)
plot(x, np.random.random(100), ax2)
fig2 = plt.figure()
plot(x, np.cos(x))
plt.show()
def plot(x, y, ax=None):
if ax is None:
ax = plt.gca()
line, = ax.plot(x, y, 'go')
ax.set_ylabel('Yabba dabba do!')
return line
if __name__ == '__main__':
main()
Чтобы ответить на ваш вопрос, вы всегда можете сделать что-то вроде этого:
def subplot(data, fig=None, index=111):
if fig is None:
fig = plt.figure()
ax = fig.add_subplot(index)
ax.plot(data)
Кроме того, вы можете просто добавить экземпляр осей к другому рисунку:
import matplotlib.pyplot as plt
fig1, ax = plt.subplots()
ax.plot(range(10))
fig2 = plt.figure()
fig2.axes.append(ax)
plt.show()
Изменение размера в соответствии с другими «фигурами» подзаголовка также возможно, но оно быстро станет больше проблем, чем того стоит. Подход простого прохождения экземпляра фигуры или осей (или список экземпляров) намного проще для сложных случаев, по моему опыту ...