У меня есть класс, который инициализирует фигуру 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 и других сайтов, но ни один из них не подходит для моего случая.