Как присвоить переменную объекту рисунка matplotlib и повторно использовать его в макете - PullRequest
0 голосов
/ 12 ноября 2019

Возможный дубликат: Как назначить график для переменной и использовать переменную в качестве возвращаемого значения в функции Python , но ответ у меня не сработал.

Рассмотрим фигурусгенерировано, как в следующих примерах: https://networkx.github.io/documentation/networkx-1.9/examples/drawing/four_grids.html

У меня есть список рисунков figs, представляющих графики, которые я хочу составить в макете.


РЕДАКТИРОВАНО вадрес комментария

Обратите внимание, что nx.draw() создает объект matplotlib.figure.Figure.

nx.draw() не возвращает объект matplotlib.figure.Figure, однако яможно сохранить сгенерированную фигуру в переменной, например:

def graph_to_figure(g):
   fig = plt.figure()
   nx.draw(g,pos,font_size=8)
   plt.close()
   return fig

type(graph_to_figure(g))

>> matplotlib.figure.Figure

, поэтому я могу сгенерировать список фигур в виде:

figs = [ graph_to_figure(g), graph_to_figure(g)]

Теперь я хочу разбить результаты на страницы для создания PDF.

Я пробовал что-то вроде:

plot_num = 221 #2 rows, 2 columns, start from index 1

pagefig = plt.figure(figsize=(10, 10)) 
    for fig in figs:
      pagefig.add_subplot( plot_num)
      plt.imshow(fig)  # return error! any api like plt.add_figure( ) to add the figure to the plot? 
      plot_num += 1

Но это даст ошибку, поскольку изображение рис. Не может быть преобразовано в float: оно ожидает реального изображения.

Поэтому я попытался и посмотрел на документацию, но не мог понять, как просто разместить matplotlib.figure.Figure объект в сетке.

Вторая попытка

Просмотр: Добавление фигур к подсюжетам в Matplotlib

Это показывает примериспользуя подзаговор:

fig, ax = plt.subplots(2, 1, sharex=True)
plot_fig_1(..., ax[0])
plot_fig_2(..., ax[1])

, но вместо этого я объект matplotlib.figure, а не объект matplotlib.pyplot ..

Я могу сделать что-то вроде этого:

  pagefig.add_subplot( plot_num)

  nx.draw(G,pos,font_size=8)

  plot_num += 1

но я хочу добавить рисунок в качестве переменной.

  pagefig.add_subplot( plot_num)

  figs[0] # doesn't work 

  plot_num += 1

Как составить макеты, используя переменные, ссылающиеся на matplotlib.figure.Figure объекты?

Как добавить переменные всетка?

Обратите внимание, я использую не графики и не изображения, а цифры.

1 Ответ

0 голосов
/ 12 ноября 2019

Сначала вам нужно будет создать одну фигуру. Вы также можете напрямую создать 4 оси и построить график для этих осей. Это должно выглядеть следующим образом (не проверено):

fig, ax_arr = plt.subplots(2,2)

for ax, g, pos in zip(ax_arr.flat, list_of_g, list_of_pos):
    nx.draw(g, pos, font_size=8, ax=ax)

plt.show()
...