使用random.randn的Python maplotlib正弦曲线

时间:2016-05-09 13:07:10

标签: python numpy matplotlib curve sine

我对Python很陌生并且有以下问题:

我使用以下代码生成了numpy数组:

X = np.random.randn(1000)*2
Y = np.sin(x)

如何获得上述数据的可视化,类似于:

enter image description here

谢谢你们的帮助!

2 个答案:

答案 0 :(得分:1)

如果您使用matplotlib.pyplot,您可以将它们绘制为散点图并获得正弦波的粗略近似值。

例如使用x和y数组:

import matplotlib.pyplot as plt
import numpy as np

X = np.random.rand(1000)*2
Y = np.sin(X)
plt.scatter(X,Y)
plt.show()

你最终会得到这样的东西:

enter image description here

修改 根据你的评论我为你跑了这个:

sortx = np.argsort(X)
plt.plot(X[sortx], Y[sortx], marker='.')
plt.show()

你会得到这个近似值: enter image description here

你必须将argsort索引传递给X,这样它才能以正确的顺序绘制它们并为Y做同样的事情,这样你就能得到一条很好的平滑线(至少对于数据最密集的地方)。

如果你想要正弦波的平滑线表示,那么你可以说:

z = np.arange(-6.28, 6.28, 0.1)
plt.plot(z, np.sin(z))
plt.show()

你最终会得到这个: enter image description here

显然,您可能需要调整x轴刻度以表示pi的值以获得更好的表示,但我认为您可以理解。

答案 1 :(得分:1)

您可以使用import numpy as np import matplotlib.pyplot as plt X = np.random.randn(1000)*2 Y = np.sin(X) plt.plot(X,Y,'green',linestyle='none',marker='.') plt.show() 绘制正在生成的数据。喜欢这个

linestyle='none'

documentation netty 4.0

如果您想通过一条线连接点,请删除import numpy as np import matplotlib.pyplot as plt X = np.random.randn(1000)*2 X=sorted(X) Y = np.sin(X) plt.plot(X,Y,'red',marker='.') plt.show() 。但是为了避免混沌绘图,首先对随机数进行排序,然后定义Y.

char

enter image description here