Tôi muốn tự động tạo một chuỗi các ô được cắt bớt thành các bản vá. Nếu tôi cố gắng và tái sử dụng một đối tượng vá, nó di chuyển vị trí trên khung hình.Sử dụng lại các đối tượng vá trong matplotlib mà không cần chúng di chuyển vị trí
Tập lệnh này (dựa trên câu trả lời cho câu hỏi trước của Yann) cho thấy những gì đang xảy ra.
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)
Cốt truyện đầu tiên trông như thế này:
Nhưng trong lần thứ hai '1.png', các bản vá đã chuyển ..
Tuy nhiên replotting lại không di chuyển các miếng vá . '2.png' và '3.png' trông giống hệt như '1.png'.
Có ai có thể chỉ cho tôi đúng hướng những gì tôi đang làm sai không ??
Trong thực tế, các bản vá tôi đang sử dụng tương đối phức tạp và mất chút thời gian để tạo - Tôi không muốn phải làm lại chúng mỗi khung nếu có thể.
Phần thực sự bizzare là điều này chỉ xảy ra nếu bạn gọi 'savefig', và không nếu bạn gọi' show' ... –