我正在上线性代数的课程,我想把向量的作用形象化,比如向量加法,法向量,等等。
比如说:
V = np.array([[1,1],[-2,2],[4,-7]])
字符串
在这个例子中,我想绘制3个向量V1 = (1,1), M2 = (-2,2), M3 = (4,-7)
。
然后我应该能够添加V1,V2来绘制一个新的矢量V12(全部在一个图中)。
当我使用下面的代码时,图不是预期的那样
import numpy as np
import matplotlib.pyplot as plt
M = np.array([[1,1],[-2,2],[4,-7]])
print("vector:1")
print(M[0,:])
# print("vector:2")
# print(M[1,:])
rows,cols = M.T.shape
print(cols)
for i,l in enumerate(range(0,cols)):
print("Iteration: {}-{}".format(i,l))
print("vector:{}".format(i))
print(M[i,:])
v1 = [0,0],[M[i,0],M[i,1]]
# v1 = [M[i,0]],[M[i,1]]
print(v1)
plt.figure(i)
plt.plot(v1)
plt.show()
型
8条答案
按热度按时间vpfxa7rd1#
比如说
字符串
的数据
然后将任意两个向量相加,并将它们绘制成相同的图形,在调用
plt.show()
之前这样做。类似于:型
的
注意:在Python 2中使用
origin[0], origin[1]
而不是*origin
omhiaaxx2#
这也可以使用
matplotlib.pyplot.quiver
来实现,如链接的答案中所述;字符串
x1c 0d1x的数据
erhoui1w3#
你的主要问题是你在循环中创建了新的图形,所以每个矢量都画在不同的图形上。这是我的想法,如果它仍然不是你所期望的,请告诉我:
产品编号:
字符串
输出值:
的数据
编辑代码:
型
编辑输出:
e7arh2l64#
你希望下面的人做什么?
字符串
这是两个不同的元组,你覆盖了你第一次做的事情.无论如何,
matplotlib
不理解你使用的“向量”是什么。你必须明确,并绘制“箭头”:型
测试结果:
的数据
ehxuflar5#
感谢大家,你们的每个帖子都给了我很大的帮助。rbierman代码对于我的问题来说非常直接,我修改了一点,并创建了一个函数来绘制给定数组的向量。我很乐意看到任何进一步改进它的建议。
字符串
Vector addition performed on random vectors
aelbi1ox6#
所有好的解决方案,借用和即兴的特殊情况->如果你想添加一个标签附近的箭头:
字符串
kx7yvsdv7#
为了使矢量长度和Angular 与绘图的x,y坐标相匹配,您可以使用以下选项来绘制图形:
字符串
dxxyhpgq8#
一旦你弄清楚它令人讨厌的细微差别,比如不以原始比例绘制矢量,Quiver是一个很好的方法。要做到这一点,我可以告诉你,你必须像许多人指出的那样将这些参数传递给Quiver call:
angles='xy', scale_units='xy', scale=1
和你应该设置你的plt.xlim
和plt.ylim
,这样你就得到了一个正方形或接近正方形的网格。这是唯一的方法,我已经得到了它一贯的绘图例如,将原点作为 *[0,0],将U,V作为 *[5,3],这意味着结果图应该是一个以0,0原点为中心的向量,在x轴上向右移动5个单位,在y轴上向上移动3个单位。