Повторное использование объектов patch в matplotlib без их перемещения position

Я хочу автоматически сгенерировать серию графиков, которые обрезаются по патчам. Если я попытаюсь повторно использовать объект патча, он перемещает позицию по холсту.

Этот сценарий (основанный на ответе на предыдущий вопрос Яна) демонстрирует, что происходит.

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)

Первый сюжет выглядит так: Correct position of patch - first time plotted

Но во втором «1.png» патч переместился .. {{ 1}} Wrong position of the patch

Однако повторное построение графика не сдвигает патч. «2.png» и «3.png» выглядят точно так же, как «1.png».

Может ли кто-нибудь указать мне в правильном направлении что я делаю не так ??

На самом деле, патчи, которые я использую, относительно сложны и требуют времени на создание - я бы предпочел не переделывать их каждый кадр, если это возможно.

5
задан Hannah Fry 17 November 2011 в 11:24
поделиться