matplotlib: Problema con la actualización en tiempo real de la figura en un bucle.
Quiero dibujar 4 bloques donde sus colores cambien aleatoriamente a blanco o rojo. Sin embargo, cuando programo como abajo, los colores anteriores permanecen sin cambios hasta que los cuatro bloques estén rojos.
from numpy import random, round
from matplotlib.pyplot import figure, show, close, clf, cla, ion, ioff, pause
LDX = [100, 100, 150, 150]
LDY = [50, 100, 50, 100]
fig = figure()
ax = fig.add_axes([0.125, 0.1, 0.7, 0.8])
ion()
for ii in range(100):
randperm = round(random.rand(len(LDX)))
for i in range(len(LDX)):
ldx = LDX[i]
ldy = LDY[i]
h11, = ax.plot(
[ldx-25, ldx+25, ldx+25, ldx-25, ldx-25],
[ldy+25, ldy+25, ldy-25, ldy-25, ldy+25],
color=’k’)
for i in range(len(LDX)):
if randperm[i]==1:
ldx = LDX[i]
ldy = LDY[i]
h12, = ax.fill(
[ldx-25, ldx+25, ldx+25, ldx-25, ldx-25],
[ldy+25, ldy+25, ldy-25, ldy-25, ldy+25],
color=’r’)
fig.show()
fig.canvas.draw()
fig.canvas.flush_events()
pause(0.001)
davy.ai
Para trazar 4 bloques con colores que cambian aleatoriamente, se pueden realizar las siguientes modificaciones en el código:
El código modificado sería:
Con estas modificaciones, cada bloque tendrá un color generado aleatoriamente entre blanco y rojo, y se actualizará en tiempo real.