Chcę automatycznie wygenerować serię wykresów, które są przypięte do łatek. Jeśli spróbuję ponownie użyć obiektu patcha, przesunie on pozycję na płótnie.Ponowne użycie obiektów patcha w matplotlib bez ich przemieszczania się
Ten skrypt (oparty na odpowiedzi na poprzednie pytanie Yanna) pokazuje, co się dzieje.
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)
Pierwsza działka wygląda tak:
Ale w drugim „1.png” plaster został przeniesiony ..
Jednak replotting znowu nie porusza poprawkę . "2.png" i "3.png" wyglądają dokładnie tak samo jak "1.png".
Czy ktoś może wskazać mi właściwy kierunek, co robię źle?
W rzeczywistości, łatki, których używam, są stosunkowo złożone i potrzebują trochę czasu, aby je wygenerować. Wolałbym nie modyfikować ich w razie potrzeby.
Naprawdę dziwaczną częścią jest to, że dzieje się tak tylko wtedy, gdy wywołasz 'savefig', a nie jeśli wywołasz' show' ... –