Как правило, вы просто передаете экземпляр осей функции.
Например:
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()
Изменение размера в соответствии с другими «формами» подзаговора также возможно, но это быстро станет большим количеством проблем, чем оно того стоит.По моему опыту, подход, состоящий в простом обтекании экземпляра фигуры или оси (или списка экземпляров), намного проще для сложных случаев ...