2017-09-02 361 views
0

我想在Seaborn中爲一個研究項目製作一些直方圖。我想,y軸相對於頻率和x軸從-180到運行180 這裏是我有我的直方圖的一個的代碼:Seaborn:相對頻率的distplot()

import pandas as pd 
from matplotlib import pyplot as plt 
%matplotlib inline 
import seaborn as sns 

df = pd.read_csv('sample.csv', index_col=0) 

x = df.Angle 
sns.distplot(x, kde=False); 

此輸出: seaborn frequency plot

我不知道如何將輸出轉換爲頻率而不是計數。我嘗試了許多不同類型的圖表來獲取頻率輸出,但無濟於事。我也遇到了這個問題,似乎要求countplot with frequencies(但與另一個功能。)我試圖用它作爲指導,但失敗了。任何幫助將不勝感激。我對這個軟件和Python也很陌生。

我的數據如下所示,並可以下載heresample data

+0

數據的比特將是很有益應答。 – Dark

+0

@Bharathshetty我的歉意。編輯包含數據的問題。 –

+0

這對回答者提供複製粘貼格式的數據很有幫助。類似於'df = pd.DataFrame({'number':[1,2,3,4,5,6],'angle':[-0.126,1,9,72.3,-44.2489,87.44]})'' 。 – 3novak

回答

3

特別是作爲一個初學者,儘量讓事情變得簡單。你有一個號碼列表

a = [-0.126,1,9,72.3,-44.2489,87.44] 

其中你要創建一個直方圖。爲了定義直方圖,你需要一些bin。所以我們說要劃分-180和180之間的範圍爲寬20箱,

import numpy as np 
bins = np.arange(-180,181,20) 

可以計算與numpy.histogram直方圖它返回倉計數。

hist, edges = np.histogram(a, bins) 

相對頻率是

freq = hist/float(hist.sum()) 

在每個倉由事件的總數量除以數,量freq因此是要繪製的條形圖相對頻率

import matplotlib.pyplot as plt 
plt.bar(bins[:-1], freq, width=20, align="edge", ec="k") 

這導致以下圖表,您可以從中讀取例如這些值的33%範圍內的位於0 20之間和

enter image description here

完整代碼:

import numpy as np 
import matplotlib.pyplot as plt 

a = [-0.126,1,9,72.3,-44.2489,87.44] 

bins = np.arange(-180,181,20) 

hist, edges = np.histogram(a, bins) 
freq = hist/float(hist.sum()) 

plt.bar(bins[:-1],freq,width=20, align="edge", ec="k") 

plt.show()