2016-03-01 50 views
2

假設我有以下幾點看法:Numpy/matplot:如何繪製第一個X%的範圍是Y%?

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

現在我想打一個情節如何觀測分佈式%的明智:

  • 首先12.5觀測的%是< = 1(1超過了8)
  • 觀測的前50%是< = 4(4超過了4)
  • 觀測首先87.5%是< = 7(7出來的8)
  • 觀測的第一個100%是< = 100(8出來的8)

我的問題:

  • 這種情節怎麼叫? (所以y軸每百分位數的最大觀察值,x軸的百分位數?)。一種直方圖?
  • 我該如何在Matplotlib/Numpy中創建這樣的情節?

感謝

回答

2

我不知道這樣的情節將被稱爲(編輯:看來這就是所謂的累積頻率曲線,或者類似的東西)。但是,這很容易做到。

本質上,如果您有排序數據,那麼觀察值的百分比< =索引i處的值僅爲(i+1)/len(data)。使用滿足這個的範圍創建一個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 

給出:

plot output

如果您希望自己的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') 

plot output

相關問題