Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中动态添加箭头的图例_Python_Matplotlib - Fatal编程技术网

Python 在matplotlib中动态添加箭头的图例

Python 在matplotlib中动态添加箭头的图例,python,matplotlib,Python,Matplotlib,上述回调函数用于在绘图中绘制箭头。我需要为它们添加图例。这些箭头是动态绘制的。上述代码将只有一个图例。我尝试了类似的解决方案,但这些解决方案不适用于matplotlib.pyplot.arrow 编辑: 问题:我有两个彩色箭头,但只有一个图例 绘图示例: 为什么不在您的案例中使用quiver()?看 为什么不在您的案例中使用quiver()?看 你能分享一些示例输出图像吗?我添加了一个链接。不知道为什么我不能嵌入它。请不要在此函数中绘制图例。相反,返回艺术家并在调用此函数的代码块中创建图例。

上述回调函数用于在绘图中绘制箭头。我需要为它们添加图例。这些箭头是动态绘制的。上述代码将只有一个图例。我尝试了类似的解决方案,但这些解决方案不适用于
matplotlib.pyplot.arrow

编辑

问题:我有两个彩色箭头,但只有一个图例

绘图示例:

为什么不在您的案例中使用
quiver()
?看


为什么不在您的案例中使用
quiver()
?看


你能分享一些示例输出图像吗?我添加了一个链接。不知道为什么我不能嵌入它。请不要在此函数中绘制图例。相反,返回艺术家并在调用此函数的代码块中创建图例。此函数是回调函数。为箭头创建图例(实际上显示的是箭头而不是矩形)有问题吗?或者是为了更新图例?你能分享一些示例输出图像吗?我添加了一个链接。不知道为什么我不能嵌入它。请不要在此函数中绘制图例。相反,返回艺术家并在调用此函数的代码块中创建图例。此函数是回调函数。为箭头创建图例(实际上显示的是箭头而不是矩形)有问题吗?还是为了更新传说?谢谢塞缪尔。我会有100支左右的箭。所以我想要一个与每个箭头相对的颜色的图例。我还试图避免存储句柄。我的功能是回拨谢谢Samuel。我会有100支左右的箭。所以我想要一个与每个箭头相对的颜色的图例。我还试图避免存储句柄。我的函数是回调函数
import matplotlib.pyplot as plt
def plot_arrow(arrow_type):
    if arrow_type == 'good_arrow':
        arrow_color = 'g'
    ar = plt.arrow(x, y, dx , dy, label=arrow_type, fc=arrow_color)
    plt.legend([ar,], [arrow_type,])
import matplotlib.pyplot as plt
import numpy as np

plt.figure()

def rand(n):
    return 2.0*np.random.rand(n)-1.0

def plt_arrows(n, c, l, xpos, ypos):
    X, Y = rand(n), rand(n)
    U, V = 4.*rand(n), 4.*rand(n)
    Q = plt.quiver(X, Y, U, V, angles="xy", scale=30, label=l, color=c)
    qk = plt.quiverkey(Q, xpos, ypos, 2, label=l, labelpos='N', labelcolor=c)

plt_arrows(20, "g", "good", 1.05, 0.9)
plt_arrows(20, "r", "bad", 1.05, 0.8)

plt.show()