初学Matplotlib,如何生成随机数据绘图
我正在玩matplotlib,想学习它的功能,但我遇到一个问题,就是如何随机生成数据来测试我的图表。有人能告诉我我哪里做错了吗?
import numpy as np
labels = numpy.random.random_integers(0, high=1, size=10000)
x = numpy.random.random_integers(1, high=10, size=10000)
y = numpy.random.random_integers(1, high=10, size=10000)
plt.ylabel("Y")
plt.xlabel("X")
plt.hist(x, label='1')
plt.hist(x[y==0], label='0')
plt.legend(loc='upper right')
plt.savefig('testRand.png')
另外,我想知道如何在一个范围内分配数据,比如如果我想让x中有10%的1,20%的2,70%的3,这样我就可以绘制图表,让我的图表看起来更好看,或者可能有一些有意义的分布?
谢谢 :)
1 个回答
2
如果你想从有意义的分布中生成样本,有很多现成的分布可以使用,比如:
x = np.random.exponential(2, 10000)
还有更多的分布可以在 scipy.stats
中找到:
from scipy import stats
stats.gausshyper.rvs(a, b, c, z, size=10000)
如果你想做一些自定义的东西,比如你想要的那样,你可以使用 scipy.stats.rv_continuous
或 rv_discrete
来创建你自己的分布,这样你就可以定义你想要的概率密度函数(pdf)或概率质量函数(pmf)。
或者,对于你的例子来说,一个更简单的办法可能是:
np.random.choice([1, 2, 2, 3, 3, 3, 3, 3, 3, 3], size=10000)