【问题标题】:Matplotlib & Data Visualization: Compare overlapping histogramsMatplotlib 和数据可视化:比较重叠的直方图
【发布时间】:2016-04-05 02:07:34
【问题描述】:

我正在比较几个直方图,以评估多年来的差异:

问题在于,虽然它显示了差异,但很难区分一种类型和另一种类型。我想知道制作这个情节的更好方法是什么?

【问题讨论】:

    标签: matplotlib data-visualization


    【解决方案1】:

    这些条并不是真正堆叠的,而是重叠的。您可以通过以下方式堆叠它们:

    import matplotlib.pyplot as plt
    import numpy as np
    
    mu, sigma = 0,100
    x1 = mu + sigma*np.random.randn(1000)
    x2 = mu + sigma*np.random.randn(1000)
    x3 = mu + sigma*np.random.randn(1000)
    
    #Stack the data
    plt.figure()
    plt.hist([x1,x2,x3], bins=30, stacked=True, normed = True)
    plt.show()
    

    ,这将导致:

    然而,要感知不同分布中的分位数变异性,箱线图通常更合适:

    plt.boxplot([x1,x2,x3])
    plt.show()
    

    ,结果:

    您还可以查看Probability PlotStackPlot 等图。如果您确实需要比较方差值(而不仅仅是全局分布),您可以在绘图上绘制方差线(如果数量级很大,则为标准差)。

    【讨论】:

    • 我的错误。我错误地使用了stack。应该是overlapboxplot 会失去直方图形状,我认为这在这里非常重要。
    • 不如使用小提琴情节 (matplotlib.org/examples/statistics/violinplot_demo.html)。您要比较哪些特征(方差只是一个数字)?
    • 不,不,不。我不需要在这里比较这个规范,例如方差等。我只想比较直方图。问题是重叠使它们很难看。半透明设置 (alpha) 让人难以区分。
    • 您有一个参数,允许您从 matplotlib 直方图中的条形图中删除填充。尝试添加 histt​​ype='step' 作为参数。它应该只显示直方图的轮廓 (micropore.wordpress.com/2011/11/15/…)。也看看这个:matplotlib.org/examples/statistics/…
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2021-05-27
    • 2013-10-04
    • 1970-01-01
    • 2018-10-25
    • 2013-10-13
    • 2021-12-20
    相关资源
    最近更新 更多