Python FancyArrowPatch不是图形标签

Python FancyArrowPatch不是图形标签,python,matplotlib,Python,Matplotlib,我无法让FancyRowPatch显示传递给标签的文本。我看不出我做错了什么。有什么想法吗 设置: import matplotlib.pyplot as plt from matplotlib import patches import numpy as np fig = plt.figure() X, Y = np.mgrid[-1:1:.1, -1:1:.1] Z = X+Y ax1 = fig.add_subplot(311) ax2 = fig.add_subplot(313)

我无法让FancyRowPatch显示传递给
标签的文本。我看不出我做错了什么。有什么想法吗

设置:

import matplotlib.pyplot as plt
from matplotlib import patches
import numpy as np

fig = plt.figure()

X, Y = np.mgrid[-1:1:.1, -1:1:.1]
Z = X+Y

ax1 = fig.add_subplot(311)
ax2 = fig.add_subplot(313)
ax1.contourf(X, Y, Z)
ax2.contourf(X, Y, -Z)
箭头代码:

ax1tr = ax1.transData # Axis 0 -> Display
ax2tr = ax2.transData # Axis 1 -> Display
figtr = fig.transFigure.inverted() # Display -> Figure
ptB = figtr.transform(ax1tr.transform((0., 0.)))
ptE = figtr.transform(ax2tr.transform((0., 0.)))
arrow = patches.FancyArrowPatch(
    ptB, ptE, transform=fig.transFigure,  # Place arrow in figure coord system
    connectionstyle="arc3,rad=0", arrowstyle='simple',
    mutation_scale = 15., label='some arrow'
)
fig.patches.append(arrow)

fig.show()
我希望画一些箭头作为箭头的标签。但事实并非如此。

原则上,它应该在代码中添加
plt.legend()
行后工作。但是,有一种变通解决方案,如下所示,您可以显式地传递
箭头
补丁和标签文本

arrow = patches.FancyArrowPatch(
    ptB, ptE, transform=fig.transFigure,  # Place arrow in figure coord system
    connectionstyle="arc3,rad=0", arrowstyle='simple',
    mutation_scale = 15., label='some arrow'
)
fig.patches.append(arrow)

plt.legend([arrow], fontsize=16)
另一种选择是

plt.legend(handles=[arrow], fontsize=16)
根据这些评论,正如我所说,
label
的目的不是将文本放在箭头补丁旁边。使用
plt.text
可以轻松实现您想要的功能。但是,如果不想使用它,可以使用以下变通方法使当前代码按需要工作

leg = plt.legend(handles = [arrow], fontsize=16, frameon=False, loc=(0.45, 0.5))

for item in leg.legendHandles:
    item.set_visible(False)

啊,我明白了,谢谢。不幸的是,这甚至不是我想要的(箭头旁边的标签)。@Lotolmensre:那你想要什么?也许你应该把你的问题说清楚。您的问题是“我无法让FancyRowPatch显示传递给标签kwarg的测试”,其中“测试”我确信您的意思是“文本”,我希望标签位于箭头旁边。像graphviz标签或tikz标签。我不认为这是关键词“标签”的作用。对于所需内容,您只需将
plt.text
与垂直对齐的文本一起使用,这样就无法将文本附加到箭头?将它添加到图形/轴/到
plt
,看起来很笨重。