Объединение графиков из разных функций в matplotlib в python - PullRequest
1 голос
/ 05 апреля 2020

У меня есть две функции, которые рисуют разные графики, скажем, foo1 и foo2. Я добавил return plt.gcf () в конце, поэтому у меня есть:

def foo1():

  #draw plot
  return plt.gcf()

def foo2():

  #draw plot
  return plt.gcf()

Я написал некоторый код, который сохраняет эти графики:

fig1 = foo1()
fig2 = foo2()

fig1.savefig("tmp1")
fig2.savefig("tmp2")

И это прекрасно работает, затем Я хочу сделать:

fig, (fig1,fig2) = plt.subplots(ncols=2)
fig1 = foo1()
fig2 = foo2()
fig.savefig("tmp")

Вот где это терпит неудачу, потому что я получаю только два пустых участка. Есть ли способ изменить последние две строки кода, чтобы мои две фигуры отображались рядом друг с другом (как в plt.subplots (ncols = 2)), или хотя бы сохранить их в одном файле?

1 Ответ

1 голос
/ 05 апреля 2020

Вам не нужно использовать определенные c функции или возвращать текущее значение. Вам просто нужно указать c, который ax отображает ваши данные, и тогда fig.savefig будет работать нормально и сохранит обе оси, потому что они принадлежат одной фигуре.

fig, (ax1, ax2) = plt.subplots(ncols=2)
ax1.plot([1,2,3,4,5], [1,2,3,4,5], color="red")
ax2.plot([1,2,3,4,5], [1,4,9,25,36], color="blue")
fig.savefig("tmp.png")

Если вы сохраните три первые строки этого кода, вы можете взглянуть здесь , чтобы сохранить две оси в разных файлах, если вы sh.

...