【问题标题】:Numpy/matplot: How to plot First X% is in range Y%?Numpy/matplot:如何绘制第一个 X% 在 Y% 范围内?
【发布时间】:2016-06-13 12:10:12
【问题描述】:

假设我有以下观察结果:

1,2,3,4,5,6,7,100

现在我想制作一个绘图观察是如何按百分比分布的:

  • 前 12.5% 的观察结果是
  • 前 50% 的观察结果是
  • 前 87.5% 的观察结果是
  • 前 100% 的观察结果是

我的问题:

  • 这种情节怎么称呼? (所以每个百分位在 y 轴上的最大观察值,在 x 轴上的百分位?)。一种直方图?
  • 如何在 Matplotlib/Numpy 中创建这种绘图?

谢谢

【问题讨论】:

    标签: python numpy matplotlib plot statistics


    【解决方案1】:

    我不确定这样的图会被称为什么(编辑:它似乎被称为累积频率图,或类似的东西)。但是,这很容易做到。

    基本上,如果您对数据进行了排序,那么观察值的百分比 i 处的值就是(i+1)/len(data)。使用满足这一点的 arange 创建 x 数组很容易。所以,例如:

    from matplotlib import pylab
    import numpy as np
    a = np.array([1,2,3,4,5,6,7,100])
    pylab.plot( np.arange(1,len(a)+1)/len(a), a,    # This part is required
                '-', drawstyle='steps' )            # This part is stylistic
    

    给予:

    如果您希望 x 轴从 0 到 100 而不是 0 到

    还要注意,这适用于您的示例数据,因为它已经排序。如果您使用的是未排序的数据,请先对其进行排序,例如np.sort

    c = np.random.randn(100)
    c.sort()
    pylab.plot( np.arange(1,len(c)+1)/len(c), c, '-', drawstyle='steps' )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多