如何在不清除所有内容(即不使用 plt.cla() 或 plt.clf())的情况下从 Matplotlib 绘图中删除 streamplot?
下图展示了一个例子。左边是流线图,右边是剩余箭头头部。
plt.streamplot()
返回一个 StreamplotSet
对象(在下面的例子中是 streams
),其中包含流线(.lines
)和箭头(.arrows
)。
调用 streams.lines.remove()
可以如预期地移除流线。
然而,我找不到一种方法来移除箭头: stream.arrows.remove()
抛出一个 NotImplementedError
,而 stream.arrows.set_visible(False)
没有效果。
import matplotlib.pyplot as plt
import numpy as np
# Generate streamplot data
x = np.linspace(-5, 5, 10)
y = np.linspace(-5, 5, 10)
u, v = np.meshgrid(x, y)
# Create streamplot
streams = plt.streamplot(x, y, u, v)
# Remove streamplot
streams.lines.remove() # Removes the stream lines
streams.arrows.set_visible(False) # Does nothing
streams.arrows.remove() # Raises NotImplementedError
下图展示了一个例子。左边是流线图,右边是剩余箭头头部。
为了解释背景,我正在尝试将流线添加到现有的imshow动画中(使用matplotlib.animation.FuncAnimation
构建)。
在这种设置中,每帧仅更新图像数据,并且无法清除并重新绘制整个图。