【问题标题】:How to generate multiple gaussian plots?如何生成多个高斯图?
【发布时间】:2019-08-02 07:45:53
【问题描述】:

我正在尝试绘制多个均值和标准差相同的高斯图,这意味着当第一个图以 20 结束时,第二个图必须从 20 开始并以 40 结束,峰值为 30

mu = 10
sigma = 2
n = 2
x = np.linspace(0,n*20,n*20)
for i in range(0,n):
    pdf = stats.norm.pdf(x, n*mu, sigma)
    plt.plot(x, pdf)

但这给了我一个情节作为图像

我想要生成的是:

期望的输出

谁能告诉我我做错了什么?

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    首先,您的两个高斯均值不同,因为一个在 10,另一个在 30。

    其次,您实际上是在创建一个高斯,平均值为n*mu=20。如果您需要生成多个高斯,则必须多次调用norm.pdf,例如在循环中:

    mus = [10,30]
    sigmas = [2,2]
    x = np.linspace(0,40,100)
    pdf = np.zeros(shape=x.shape)
    for m,s in zip(mus,sigmas):
        pdf += stats.norm.pdf(x, m, s)
    plt.plot(x, pdf)
    

    【讨论】:

      【解决方案2】:

      您的代码的问题在于:

      pdf = stats.norm.pdf(x, n*mu, sigma)
      

      您正在绘制相同的pdf,因为nloop 内没有变化,您可能想要使用i 而不是n。 除了它不起作用,因为i 取值01,因此mu 变成020,你还需要修复它。 对于一般更清洁的方法,请查看其他答案。

      【讨论】:

        猜你喜欢
        • 2011-12-03
        • 2011-08-09
        • 2014-09-23
        • 2014-07-24
        • 2010-12-05
        • 2017-06-10
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多