【问题标题】:I want to plot perpendicular vectors in Python我想在 Python 中绘制垂直向量
【发布时间】:2016-12-18 04:10:02
【问题描述】:

我想简单地在 2D 中绘制垂直向量。我已经在下面的代码中实现了 2 种方法来绘制它们,但是当绘制图时,向量不会“看起来”垂直于我。如果有什么不同,我正在使用 Spyder。

import numpy as np
import matplotlib.pyplot as plt
x1=[0,0,4,3]
x2=[0,0,-3,4]
x3=[0,0,3,-4]
soa =np.array([x1,x2,x3]) 
X,Y,U,V = zip(*soa) 
plt.figure()
ax = plt.gca()
ax.quiver(X,Y,U,V,angles='xy',scale_units='xy',scale=1)
ax.set_xlim([-10,10])
ax.set_ylim([-10,10])
plt.draw()
plt.show()

import pylab as pl
from matplotlib import collections  as mc
lines = [[(0, 1), (4, 3)], [(-3, 4), (3, -4)]]
c = np.array([(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1)])
lc = mc.LineCollection(lines, colors=c, linewidths=2)
fig, ax = pl.subplots()
ax.add_collection(lc)
ax.autoscale()
ax.margins(0.1)

【问题讨论】:

    标签: python vector plot


    【解决方案1】:

    您的问题是 x 和 y 轴上的单位大小不同。你需要强迫他们平等。

    在matplotlib.pyplot中,添加一行

    plt.axes().set_aspect('equal')
    

    就在你显示图表之前

    plt.show()
    

    我在 Spyder 的 IPython 控制台中得到了这个结果:

    在pylab中,添加一行

    ax.set_aspect('equal')
    

    最后。但是,这些线段看起来仍然不垂直,那是因为它们确实不垂直。第一条红线段的斜率为 2/3,因此第二条绿线段的斜率应为 -3/2,但实际上斜率为 -4/3。也许将您的线路更改为

    lines = [[(0, 1), (4, 3)], [(-3, 4), (3, -5)]]
    

    (我将结尾 -4 更改为 -5)以获得正确的第二个斜率。您会从第一个数字变为第二个数字:

    最后一个看起来是垂直的。

    【讨论】:

      【解决方案2】:

      问题是图形画布的纵横比。

      用途:

      plt.figure(figsize=(6,6))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        相关资源
        最近更新 更多