【问题标题】:How can I add a normal distribution curve to multiple histograms?如何将正态分布曲线添加到多个直方图?
【发布时间】:2017-03-02 20:19:57
【问题描述】:

使用以下代码,我创建了四个直方图:

import numpy as np
import pandas as pd

data = pd.DataFrame(np.random.normal((1, 2, 3 , 4), size=(100, 4)))
data.hist(bins=10)

我希望直方图看起来像这样:

我当时就知道如何制作一张图,see here

但是如何在不指定每个直方图的情况下为多个直方图做到这一点?理想情况下,我可以使用“pd.scatter_matrix”。

【问题讨论】:

    标签: python-3.x pandas matplotlib normal-distribution


    【解决方案1】:

    分别绘制每个直方图并按照您链接的示例中的每个直方图进行拟合,或者查看hist api example here。本质上应该做的是

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.mlab as mlab
    fig = plt.figure()
    ax1 = fig.add_subplot(221)
    ax2 = fig.add_subplot(222)
    ax3 = fig.add_subplot(223)
    ax4 = fig.add_subplot(224)
    for ax in [ax1, ax2, ax3, ax4]:
        n, bins, patches = ax.hist(**your_data_here**, 50, normed=1, facecolor='green', alpha=0.75)
        bincenters = 0.5*(bins[1:]+bins[:-1])
        y = mlab.normpdf( bincenters, mu, sigma)
        l = ax.plot(bincenters, y, 'r--', linewidth=1)
    plt.show()
    

    【讨论】:

    • 感谢您的回答。我想知道是否有更简单的方法来执行此操作,因为在我的实际程序中我有很多直方图,其中四个仅用于示例..
    • 我最终创建了一个函数来创建直方图和正态分布曲线,然后在 for 循环中使用该函数。
    猜你喜欢
    • 2021-12-04
    • 2016-09-16
    • 1970-01-01
    • 2019-11-24
    • 2016-08-03
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多