我想画一个向量场和一个移动的圆,但我不想画圆内的向量场。此外,我想把整个事情做得生动一些。下面是我在整个网格上绘制向量场的代码。变量“positions”包含圆的坐标。变量“vectorFields”包含整个网格上的向量场的分量。我怎样才能把这个区域从它内部的向量场中排除呢?
import matplotlib.animation as anim
X,Y = np.mgrid[-10:10,-10:10]
fig, ax = plt.subplots()
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
circle1=plt.Circle((positions[0,0,0], positions[0,1,0]),1)
ax.add_patch(circle1)
U=vectorFields[:,:,0,0]
V=vectorFields[:,:,1,0]
q = ax.quiver(X, Y, U, V)
def animate(i):
circle1.set_center(positions[0,:,i])
U=vectorFields[:,:,0,i]
V=vectorFields[:,:,1,i]
q.set_UVC(U, V)
return [circle1]
theAnimation = anim.FuncAnimation(fig, animate, frames=1000, interval=10, blit=True)
1条答案
按热度按时间2admgd591#
所以我找到了问题的答案。诀窍在于,可以计算网格中每个点到圆的距离。如果距离小于半径,则可以将该点处的向量场设置为零。这相当于不绘制圆内的向量,因为消失的向量不会被绘制。