如何防止Jupyter notebook / plt.quiver多次使用时箭头重叠?

1 投票
1 回答
26 浏览
提问于 2025-04-13 17:50

我在使用matplotlib.pyplot.quiver()这个命令时遇到了问题,希望你能帮我想想办法。我想写一段代码,输入一个二维数组,然后为数组中的每个角度输出一个颜色和一个箭头。

这是我用来设置颜色的函数:

def plot_map(arr_2D):
    Farben = colors.Normalize(vmin=-np.pi, vmax=np.pi)
    plt.imshow(arr_2D, cmap='hsv', norm=Farben)
    return

这是用来画箭头的:

def plot_arrows(arr_2D):
    X = np.arange(2)
    Y = np.arange(2)
    U = np.cos(arr_2D[X][Y])
    V = np.sin(arr_2D[X][Y])
    plt.quiver(X,Y,U,V, units = 'x', headaxislength = 2, headlength = 1, pivot = 'mid', scale = 1.1)
    return

我想要的结果大概是这样的:

示例数组1: [[-np.pi -np.pi/2] [-np.pi 0]]

图片1:这是一个2x2的网格,每个方框都有一个特定的颜色,并且里面有一个箭头指向正确的方向。-180°(第一个角度)是深红色,-90°是绿色。

到目前为止,代码运行得很好,问题出现在我再次调用同一个函数来处理不同的数组时。

示例数组2: [[-np.pi/2 -np.pi/2] [-np.pi 0]]

图片2:我在这里改变了第一个角度。第一个角度的颜色确实变了,现在是绿色,没问题。新的箭头也在方框里添加了进来。但是问题是,第一个箭头仍然在。这意味着现在方框里有两个箭头,一个是错误的。

我试着找一个命令来删除第一个图形,然后再生成第二个,但我找不到这样的命令,也不知道该尝试什么,因为我其实不知道问题出在哪里。

在我最终要写的程序中,所有的箭头方向都是不断变化的。如果这个问题不解决,新的箭头加上旧的箭头,最后基本上就只剩下黑色的圆圈了。我该怎么才能在添加新箭头之前删除旧的箭头呢?颜色的部分没有这个问题,颜色工作得很好,所以我很困惑。

非常感谢你的帮助!

1 个回答

0

你使用 figure 是为了创建一个新的图形,这样你后面画的东西就不会和之前画的东西重叠在一起。

撰写回答