Desidero generare automaticamente una serie di grafici che vengono ritagliati sulle patch. Se provo a riutilizzare un oggetto patch, sposta la posizione sul canvas.Riutilizzo degli oggetti patch in Matplotlib senza che si spostino posizione
Questo script (basato su una risposta a una domanda precedente di Yann) dimostra cosa sta succedendo.
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 prima trama assomiglia a questo:
Ma nel secondo '1.png', la patch è spostato ..
Tuttavia tracciare nuovamente ancora non si muove la patch . '2.png' e '3.png' hanno lo stesso aspetto di '1.png'.
Qualcuno potrebbe indicarmi la direzione giusta di ciò che sto facendo male ??
In realtà, le patch che sto utilizzando sono relativamente complesse e richiedono un po 'di tempo per generare: preferirei non doverle rifare ogni frame se possibile.
La parte veramente bizzarra è che ciò accade solo se si chiama 'savefig', e non se si chiama' show' ... –