I would like to update a figure of matplotlib for every iteration in a loop. It works for about the first 30 iterations, but then the updates stop although there are more iterations.
Following you can find my code for the figure:
import numpy as np
import matplotlib.pyplot as plt
class SimpOutput:
    fig = None
    ax_l = None
    ax_r = None
    it_container = []
    obj_container = []
    def __init__(self):
        self.fig, (self.ax_l, self.ax_r) = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
        self.ax_l.set_title("Flexibility $c$")
        self.ax_l.set_ylabel("obj. value $c$")
        self.ax_l.set_xlabel("Iteration")
        self.ax_r.set_title("Shape")
        self.fig.show()
    def update(self, iteration, obj, x):
        self.it_container.append(iteration)
        self.obj_container.append(obj)
        self.ax_l.plot(self.it_container, self.obj_container, c="r")
        x = x.reshape((4, 4))
        x = x.T
        x = np.flip(x, 0)
        self.ax_r.imshow(x, cmap="binary")
        plt.pause(0.1)
        self.fig.show()
        plt.pause(0.1)
if __name__ == "__main__":
    out = SimpOutput()
    for i in range(50):
        out.update(i, 1000 * np.random.rand(), np.random.rand(16))
update is called in every loop.
Using fig.canvas.show() and different values for pause does not affect on the update. Furthermore, the methods set_array() and set_data() do not fix the problem either. While debugging, the figure is updated for every iteration. I write the code with PyCharm.
Does anyone had the same issue or rather does anyone has an idea how to solve this issue?
Thanks in advance!
Bests,
Sebastian