Python 如何在matplotlib中使用xy数据设置quiverkey长度缩放?

Python 如何在matplotlib中使用xy数据设置quiverkey长度缩放?,python,matplotlib,Python,Matplotlib,我正在尝试设置绝对quiver键箭头长度,以匹配我的quiver数据的特定箭头长度。谁能告诉我quiverkey参数U是如何工作的,或者至少是如何根据我的需要调整它 背景 Python版本:3.6.5 matplotlib版本:3.0.0 最小示例 我稍微修改了以下示例: 通过这种方式,我可以使用显示的箭头长度控制箭袋显示的最大箭头长度。在本例中,最大数据箭头长度约为14,并且根据xy数据以2的箭头长度显示 问题 如果我运行上述示例,我会得到: 但是,如果我最大化图形窗口,我会得到: qui

我正在尝试设置绝对
quiver键
箭头长度,以匹配我的
quiver
数据的特定箭头长度。谁能告诉我
quiverkey
参数
U
是如何工作的,或者至少是如何根据我的需要调整它

背景

Python版本:3.6.5

matplotlib版本:3.0.0

最小示例

我稍微修改了以下示例:

通过这种方式,我可以使用
显示的箭头长度
控制箭袋显示的最大箭头长度。在本例中,最大
数据箭头长度约为14,并且根据xy数据以2的箭头长度显示

问题

如果我运行上述示例,我会得到:

但是,如果我最大化图形窗口,我会得到:

quiverkey
箭头长度与我的
quiver
箭头不匹配,我必须使用一个随机的高数字来显示
quiverkey\u长度

问题


我想将
quiverkey
箭头长度设置为特定值,如
quiver
所示,例如10。然而,它似乎根本不随数据的变化而变化。如何实现这一点?

这似乎是matplotlib中的一个错误,现已修复

交叉引用:
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(-10, 11, 2)
Y = np.arange(-10, 11, 2)
U, V = np.meshgrid(X, Y)

# calculate length of each arrow
data_arrow_length = np.abs(np.sqrt(np.square(U[:]) + np.square(U[:])))

# set displayed arrow length for longest arrow
displayed_arrow_length = 2

# calculate scale factor for quiver
scale_factor = np.max(data_arrow_length)/displayed_arrow_length

# mysterious arrow length for quiverkey
quiverkey_length = 200

fig, ax = plt.subplots()
q = ax.quiver(X, Y, U, V, pivot='middle',
              units='xy', width=0.1,
              scale=scale_factor, scale_units='xy')
ax.quiverkey(q, X=0.3, Y=1.1, U=quiverkey_length,
             label='Quiver key, length = 10', labelpos='E')

plt.show()