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