Python maplotlib 正弦曲线 random.randn

Python maplotlib sine curve with random.randn

我是 Python 的新手,有以下问题:

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

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

如何获得类似于以下内容的上述数据的可视化:

谢谢大家的帮助!

如果您使用 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()

你最终会得到这样的结果:

编辑 根据您的评论,我 运行 为您提供:

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

你会得到这个近似值:

您必须将 argsort 索引传递给 X,以便它以正确的顺序绘制它们,并对 Y 执行相同的操作,这样您就可以获得一条漂亮的平滑线(至少对于您的数据最密集的地方)。

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

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

你会得到这样的结果:

显然,您可能想要调整 x 轴刻度以表示 pi 的值以获得更好的表示,但我想您明白了。

您可以只绘制使用 matplotlib 生成的数据。像这样

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'。但是为了避免乱画,还要先对你的随机数进行排序,然后再定义Y。

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()