将Vector的4个度量坐标转换为Vector字段

问题描述 投票:0回答:1

我有四个3 * 3矩阵:

X1=[[2.276840271621883, 2.329662596474333, 2.3633290819729527], [2.276840271621883, 2.329662596474333, 2.3633290819729527], [2.276840271621883, 2.329662596474333, 2.3633290819729527]]
X2=[[2.2698145746531786, 2.3308266405107805, 2.3594316100497643], [2.2698145746531786, 2.3308266405107805, 2.3594316100497643], [2.2698145746531786, 2.3308266405107805, 2.3594316100497643]]
Y1=[[48.832151066337865, 48.84935494957576, 48.86990145209316], [48.832151066337865, 48.84935494957576, 48.86990145209316], [48.832151066337865, 48.84935494957576, 48.86990145209316]]
Y2=[[48.83251302946139, 48.85024866127781, 48.86928223168673], [48.83251302946139, 48.85024866127781, 48.86928223168673], [48.83251302946139, 48.85024866127781, 48.86928223168673]]

我想创建一个包含9个向量的向量字段

(X1[i][j],Y1[i][j]) to (X2[i][j],Y2[i][j])
these are coordinates

我曾尝试使用箭袋,但我有尺寸问题。

python matplotlib
1个回答
0
投票

当你想使用matplotlib的quiver函数绘制一组箭头时,从Pi = (X1i, Y1i)点和Qi = (X2i, Y2i)点的“end”开始,你可以这样调用quiver

# creating demo data
X1, X2, Y1, Y2 = [ np.random.random_integers(0, 9, (2,2)) for _ in range(4) ] 
plt.quiver(X1, Y1, (X2 - X1), (Y2 - Y1), angles='xy', scale=1, scale_units='xy')

注意调用quiver时添加的参数。这些确保箭头在提供的数据坐标中开始和结束。 X1的形状和这里定义的其他3个变量是(2, 2),这只是为了说明quiver可以用于二维阵列。你可以制作形状(3, 3)以适合你的例子。

出于可视化目的并使点更清晰,我在开始和结束坐标中添加了一些标记:

plt.plot(X1.ravel(), Y1.ravel(), 'ro ')
plt.plot(X2.ravel(), Y2.ravel(), 'bx ')

这导致了这个数字:

quiver arrows from begin to end coordinates

© www.soinside.com 2019 - 2024. All rights reserved.