2016-11-04 54 views
1

我有以下的大熊貓據幀df創建累積分佈直方圖:給定數據

Bin Cum_val 
0 0 0.39 
1 1 0.63 
2 2 0.76 
3 3 1.00 

我想繪製累積分佈histagram(階梯式),將在X軸Bin值,和Y軸上的值爲Cum_val

我試過這種方法(包括與cumulative=Truecumulative=False,因爲我的數據已經累計),但我得到的X軸Cum_val值,而不是Y軸:

n, bins, patches = plt.hist(x=df.ix[:,1], normed=True, 
          histtype='step', cumulative=True) 

plt.grid(True) 
plt.ylim(0, 1.05) 
plt.title('cumulative step') 

plt.show() 

如何解決這個問題?

回答

0

您需要清楚直方圖是什麼以及它與您的數據之間的關係。你正在做的是試圖計算一個直方圖的數據,已經是一個直方圖

從這個意義上講,matplotlib的行爲是正確的:在你的數組0.39, 0.63, 0.76, 1.00每個值只發生一次。如果您撥打
plt.hist(x=[0.39, 0.63, 0.76, 1.00], normed=True, cumulative=False)
而沒有bins變元,則這四個值將分配到默認的10個元素中,從而在圖中生成等高的條。

我只能在你真正想實現猜測 - 這將是創建值的簡單條形圖,這樣

import matplotlib.pyplot as plt 
import numpy as np 

data = np.array([[0,1,2,3],[0.39, 0.63, 0.76, 1.00]]).T 
plt.bar(data[:,0], data[:,1], 1, tick_label=data[:,0], align="center") 
plt.ylim(0, 1.05) 
plt.title('cumulative step') 

plt.show()