gpt4 book ai didi

python - 在不移动位置的情况下重用 matplotlib 中的补丁对象

转载 作者:太空狗 更新时间:2023-10-30 01:17:03 25 4
gpt4 key购买 nike

我想自动生成一系列剪裁成补丁的图。如果我尝试重复使用一个补丁对象,它会在 Canvas 上移动位置。

此脚本(基于 Yann 对先前问题的回答)演示了正在发生的事情。

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'中,补丁已经移动了.. Wrong position of the patch

然而,重新绘制并不会移动补丁。 “2.png”和“3.png”看起来与“1.png”完全一样。

谁能指出我做错事的正确方向?

实际上,我使用的补丁相对复杂并且需要一些时间来生成 - 如果可能的话,我宁愿不必每一帧都重新制作它们。

最佳答案

可以通过为每个绘图使用相同的轴来避免该问题,并在每次迭代后调用 ax.cla() 来清除绘图。

import pylab as plt
import scipy as sp
import matplotlib.patches as patches

sp.random.seed(100)
patch = patches.Circle((.75,.75),radius=.25,fc='none')

fig = plt.figure()
ax = fig.add_subplot(111)

def doplot(x,y,patch,count):
ax.set_xlim(-0.2,1.2)
ax.set_ylim(-0.2,1.2)
x = sp.random.random(100)
y = sp.random.random(100)
im = ax.scatter(x,y)
ax.add_patch(patch)
im.set_clip_path(patch)
plt.savefig(str(count) + '.png')
ax.cla()

for count in xrange(4):
doplot(x,y,patch,count)

关于python - 在不移动位置的情况下重用 matplotlib 中的补丁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com