python pyplot.quiver:两个叠加向量场的缩放

python pyplot.quiver:两个叠加向量场的缩放,python,matplotlib,plot,scaling,vector-graphics,Python,Matplotlib,Plot,Scaling,Vector Graphics,我想在一个箭图中画两个向量场。这已经起作用了:对于每个点,有两个不同颜色的向量。现在的问题是,缩放不一样:例如,来自第一个字段(sol)的向量(1,0)显示为另一个长度,作为来自第二个字段(res)的向量(1,0) 如何使quiver以相同的比例绘制两个字段,以便res中的(1,0)与sol中的(1,0)具有相同的物理长度 我的代码: import numpy as np from matplotlib import pyplot as plt #res and sol are two vec

我想在一个箭图中画两个向量场。这已经起作用了:对于每个点,有两个不同颜色的向量。现在的问题是,缩放不一样:例如,来自第一个字段(
sol
)的向量(1,0)显示为另一个长度,作为来自第二个字段(
res
)的向量(1,0)

如何使quiver以相同的比例绘制两个字段,以便
res
中的(1,0)与
sol
中的(1,0)具有相同的物理长度

我的代码:

import numpy as np
from matplotlib import pyplot as plt

#res and sol are two vector fields with dimension (ny, nx ,2)

step=3 #not all vectors should be plotted. Just every third one (in x and y direction)

X,Y = np.meshgrid(np.arange(0,nx,step), np.arange(0,ny,step))            
Q=plt.quiver(X,Y,sol[::step,::step,0], sol[::step,::step,1], color='r')    
W=plt.quiver(X,Y,res[::step,::step,0], res[::step,::step,1], color='b')
plt.quiverkey(Q, 0.4, 0.15, 1, r'text1', labelpos='S')
plt.quiverkey(W, 0.6, 0.15, 1, r'text2', labelpos='S')
plt.show()

您有两种解决方案:

  • 规范化输入数据并对其进行缩放
  • 告诉quiver如何缩放数据
  • 解决方案2(最快):


    您可以调整“缩放”值,但必须在两个箭筒中保持相同的值,才能获得预期的效果。有帮助,但在您的情况下,我认为为每个箭袋提供相同的比例并不是一种过度规范。

    欢迎!你能说得更清楚些吗?代码片段中有未定义的值(self.field\u size\u x、self.field\u size\u y、步长、sol和res)。此外,arange函数还有步进选项(arange(self.field_size_x)[::step]和arange(0,self.field_size_x,2)是相同的)。
    Q=plt.quiver(X,Y,sol[::step,::step,0], sol[::step,::step,1], color='r', scale=1)
    W=plt.quiver(X,Y,res[::step,::step,0], res[::step,::step,1], color='b', scale=1)