如何使用python在同一颤抖图中标记多个箭头

时间:2020-04-11 01:05:36

标签: python matplotlib

我正在大学里为线性代数课程开发可视化脚本,并且我正在尝试使用python中的quiver函数显示多个向量。我试图在一个颤抖函数中绘制来自2x2矩阵的向量,但是,现在,我试图标记它们,我想分别访问每个向量。

import numpy as np
import matplotlib.pyplot as plt

A = np.array([[1,3], [2,2]])
# create figure
fig = plt.figure()
# creates variable containing current figure
ax = fig.gca()

baseArrow = ax.quiver(*origin, A[0,:], A[1,:], color=['r','g']',  angles='xy', scale_units='xy', scale=1) 

ax.quiverkey(baseArrow,.85,.85,0.8,'i-hat',labelcolor='k',labelpos='S', coordinates = 'figure')

# display grid
plt.grid()
# display figure
plt.show()

这使我可以用相应的颜色(红色)标记第一个矢量。现在我想做的是用不同的标签将第二个矢量标记为绿色? 也许像这样:

ax.quiverkey(baseArrow**[2]**,.85,.85,0.8,'i-hat',labelcolor='k',labelpos='S', coordinates = 'figure')

有没有办法单独提取每个矢量,还是将它们单独绘制而不是绘制矢量会更好?我看了以下问题,但并不能真正解决我的问题。 Matplotlib Quiver plot matching key label color with arrow color

1 个答案:

答案 0 :(得分:0)

我的感觉是,quiver函数更适合/打算绘制大量矢量,就像您在描绘磁力,涡流(梯度)或梯度的图形中所发现的那样(例如,参见meshgrid) 。它的API反映了这一点,因为它分别接受结束坐标和开始坐标:即,您需要像上面所做的那样拆分向量的分量。 我可以建议您研究一下plotarrow函数,这些函数可以使您更好地控制可视化效果(例如,与向量无关的标签),并且可以使代码更加清晰,因为您将能够声明向量(当然是np.arrays)并直接使用它们。 最后请注意,您可以一次调用fib, ax = plt.subplots()获得无花果和斧头。 希望这会有所帮助!