使用matplotlib和numpy,从点ij到kl的向量绘制一组行的最简单方法是什么?

时间:2016-04-09 22:42:25

标签: python numpy matplotlib

我正在学习线性代数,并希望能够绘制线来测试事物。我通常对在图形上绘制线((i,j),(k,l))的函数感兴趣。我将使用numpy产生我的积分。

我的大多数行都是从(0,0)到(k,l)。

我可以手动输入一些效果很好的基本内容:

"("

enter image description here

import random
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.plot([0, 1], [0, 1])
plt.show()

enter image description here

但是现在如果我想从(0,0)绘制到一组点xy,通过从均匀分布中随机抽样生成,我对如何轻松地重构这些数据感到困惑,因此它对matplotlib有意义。我相信必须有一个良好的“pythonic”方式来做到这一点。

plt.plot([0, 1], [0, 1], [0, 3], [0, 1])
plt.show()

显然,情节(xy)甚至没有接近正确的答案!如何以最简单的方式从x = np.random.uniform(0, 100, 5) y = np.random.uniform(0, 100, 5) zeros = zip(np.zeros(5), np.zeros(5)) # 5 pairs at the origin xy = zip(x, y) # 5 pairs elsewhere print xy print zeros plt.plot(xy) plt.show() 中的5个点到zeros中的5个点创建线条?

enter image description here

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,我只需要为你的所有行分享一组x分。

x = np.linspace(0,20)

然后生成随机y值,将第一个y值设置为0(所以你的集合中x = 0,y = 0)

linenumber = 10
for i in range(linenumber):
    y = np.random.randn(0,10)
    y[0] = 0
    plt.plot(x,y)

答案 1 :(得分:2)

这是一种继续生成起点和终点的方法。您可以轻松地修改make_line()帮助程序,以根据需要生成和操作任意多组点。

import matplotlib.pyplot as plt
import random

line_number = 20

def make_line():
    x, y = (0, random.randrange(1000)), (0, random.randrange(20,1000))
    return x, y

for i in range(line_number):
    x, y = make_line()
    plt.plot(x, y, linewidth=2)

plt.xlim(0, 100)
plt.ylim(0, 100)

plt.show()

enter image description here