我正在学习线性代数,并希望能够绘制线来测试事物。我通常对在图形上绘制线((i,j),(k,l))的函数感兴趣。我将使用numpy产生我的积分。
我的大多数行都是从(0,0)到(k,l)。
我可以手动输入一些效果很好的基本内容:
"("
import random
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.plot([0, 1], [0, 1])
plt.show()
但是现在如果我想从(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个点创建线条?
答案 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()