gpt4 book ai didi

python - 无法从 Matplotlib 轴中删除流图箭头

转载 作者:行者123 更新时间:2023-12-05 02:54:08 25 4
gpt4 key购买 nike

如何删除 streamplot从 Matplotlib 绘图而不清除所有内容(不使用 plt.cla()plt.clf())?


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

下图说明了这个例子。左:流图,右:剩余箭头。

Streamplot example: full plot (left), and lines removed (right)


对于上下文,我正在尝试向现有的 imshow 动画(使用 matplotlib.animation.FuncAnimation 构建)添加流线。在此设置中,每帧仅更新图像数据,我无法清除并重新绘制完整图。

最佳答案

这个解决方案似乎可行,灵感来自 this回答。有两种方式:

  1. 去除箭头补丁
  2. alpha参数设置为0

streams = plt.streamplot(x, y, u, v)

ax = plt.gca()

for art in ax.get_children():
if not isinstance(art, matplotlib.patches.FancyArrowPatch):
continue
art.remove() # Method 1
# art.set_alpha(0) # Method 2

enter image description here

关于python - 无法从 Matplotlib 轴中删除流图箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932534/

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