«Невозможно поместить одного художника в более чем одну фигуру» при запуске следующих экземпляров сюжета в цикле - PullRequest
0 голосов
/ 23 января 2020

У меня есть класс, который инициализирует фигуру matplotlib , как показано ниже, и показывает набор многоугольников на фигуре. Примечание: это не фактический код, реальный код слишком длинный.

 import matplotlib as plt
 class Plotter:
      polygon_plots = []
      def __init__(self, polygons):
           self.fig = plt.figure()
           self.ax = self.fig.add_subplot(1,1,1)
           self.polygon_plots = convert_to_plt_Polgyon_objects(polygons)

      def show(self):
           for polygon in self.polygon_plots:
                self.ax.add_patch(polygon)
           plt.pause(5)

      def close(self):
           plt.close(self.fig)

Основной l oop вызывает функцию, которая создает экземпляр класса для нового набора полигонов.

 def main():
      for file in files:
           polygons = process_file(file)
           plotter1 = Plotter(polygons)
           plotter1.show()
           plotter1.close()
           del plotter1

Первый график отображается без проблем, но на следующем графике происходит сбой всего приложения, как только возникает исключение от artist.set_figure ():

 RuntimeError: Can not put single artist in more than one figure

Функция process_file занимает 30-180 секунд, поэтому достаточно времени для удаления предыдущего экземпляра. Я пробовал разные решения от stackoverflow и других сайтов, но ни один из них не подходит для моего случая.

...