我对Python很陌生并且有以下问题:
我使用以下代码生成了numpy数组:
X = np.random.randn(1000)*2
Y = np.sin(x)
如何获得上述数据的可视化,类似于:
谢谢你们的帮助!
答案 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()
你最终会得到这样的东西:
修改强> 根据你的评论我为你跑了这个:
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的值以获得更好的表示,但我认为您可以理解。
答案 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'
如果您想通过一条线连接点,请删除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