После создания массива matplotlib.figure.Figure, как мне нарисовать их как подзаголовки одной фигуры?

У меня есть метод, который возвращает массив объектов matplotlib.figure.Figure, после чего я вызываю pyplot.close() и сохраняю объекты. Я хочу перерисовать эти объекты Figure как подзаголовки одного рисунка.

Это выглядит так

import matplotlib.pyplot as plt
FIGS = list()
for indx, i in enumerate(HISTARR):
    FIGS.append(subHistogramClientWrapper(indx, LIST, HISTARR.size(), i))
plt.close()
for each in FIGS:
    plt.draw()
plt.show()
## This code below will crash, since add_subplot can't receive a figure
figo_help_me = plt.figure(1, figsize=(12, 3))
for each in FIGS:
    figo_help_me.add_subplot(each)
plt.show()

Должен ли я вернуть одну фигуру с подзаговорами?

Если да, то как перерисовать фигуру после вызова plt.close()?


person Claudiordgz    schedule 31.07.2013    source источник
comment
Перемещать художников между фигурами сложно. Вы должны реорганизовать свой код, чтобы использовать оси для рисования в качестве аргумента.   -  person tacaswell    schedule 31.07.2013
comment
Алгоритм возвращает массив диапазонов, затем я создаю несколько гистограмм для одного и того же набора данных, используя разные диапазоны. Вот почему я создал subHistogramClientWrapper. Я просто хотел знать, есть ли лучший способ хранить и перерисовывать фигуры.   -  person Claudiordgz    schedule 31.07.2013
comment
правильно, передайте оси, которые вы хотите subHistogramClientWrapper отрисовывать, в качестве аргумента, вместо того, чтобы создавать и возвращать figure объекты.   -  person tacaswell    schedule 31.07.2013
comment
@tcaswell, вы предложили то же решение в другой теме. Wrapper уже делает то, что вы говорите, в этом его цель, но если моему клиенту нужны цифры, то я не вижу смысла перерисовывать (в случае, если массив данных слишком велик > 50k). Я думаю, что лучшим решением будет использование гистограмм numpy для пересчета с использованием большого набора данных, а затем сохранение оси, как вы говорите, поскольку перерисовка объекта фигуры невозможна.   -  person Claudiordgz    schedule 31.07.2013
comment
нет, ваша оболочка создает и возвращает figure объекты (которые вы помещаете в список с именем FIGS), что не то, что я предлагаю. Настройте оси, которые вы хотите сначала, и передайте полученные axes объекты в вашу функцию-оболочку.   -  person tacaswell    schedule 31.07.2013
comment
Вы также должны прочитать stackoverflow.com/questions/14254379/, поскольку у вас есть некоторые сомнения в том, что делает plt.*.   -  person tacaswell    schedule 31.07.2013
comment
Спасибо @tcaswell, я удалил возврат из обертки. Я справлюсь со всем обеими осями. В теме, которую вы разместили, есть действительно интересная информация. С Уважением   -  person Claudiordgz    schedule 01.08.2013