Quiero generar automáticamente una serie de gráficos recortados en parches. Si intento y reutilizo un objeto de parche, mueve la posición a través del lienzo.Reutilización de objetos de parche en matplotlib sin la posición en movimiento
Este script (basado en la respuesta a una pregunta anterior de Yann) demuestra lo que está sucediendo.
import pylab as plt
import scipy as sp
import matplotlib.patches as patches
sp.random.seed(100)
x = sp.random.random(100)
y = sp.random.random(100)
patch = patches.Circle((.75,.75),radius=.25,fc='none')
def doplot(x,y,patch,count):
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.scatter(x,y)
ax.add_patch(patch)
im.set_clip_path(patch)
plt.savefig(str(count) + '.png')
for count in xrange(4):
doplot(x,y,patch,count)
La primera parcela se ve así:
Pero en la segunda '1.png', el parche se ha movido ..
Sin embargo replotting de nuevo no se mueve el parche . '2.png' y '3.png' son exactamente iguales a '1.png'.
¿Alguien podría apuntarme en la dirección correcta de lo que estoy haciendo mal?
En realidad, los parches que uso son relativamente complejos y tardan un tiempo en generarlos. Preferiría no tener que volver a hacerlos en cada fotograma si es posible.
La parte realmente bizarra es que esto solo ocurre si llama a 'savefig', y no si llama a' show' ... –