2016-01-18 84 views
0

兩個直方圖可以通過創建一個同時具有直方圖疊加(可能歸一化)和直方圖比率圖的特徵進行比較。這裏有這樣一個情節:使用matplotlib,如何通過覆蓋它們並顯示它們的比率圖來比較直方圖?

使用matplotlib怎麼會這樣的情節進行?

+0

第一部分是比較容易的。您可以通過將「alpha」設置爲小於1來繪製透明直方圖,並提供預定義的bin大小。你能解釋下面的情節究竟應該表明什麼?您可能必須手動執行該操作。 – kazemakase

回答

1

我沒有看到這些點是什麼,但這裏有一個比例的簡單例子。主要技巧是重用hist返回的bin值。

enter image description here

import matplotlib.pyplot as plt 
from numpy.random import normal 

y = [] 
y.append(normal(2, 2, size=120)) 
y.append(normal(2, 2, size=120)) 

fig, (ax1, ax2) = plt.subplots(nrows=2) 

ns, bins, patches = ax1.hist(y, normed=False, 
         histtype='stepfilled', 
         bins=8, 
         alpha=0.2, 
         label=['a','b'] 
        ) 
ax1.legend() 

ax2.bar(bins[:-1],  # this is what makes it comparable 
     ns[0]/ns[1], # maybe check for div-by-zero! 
     alpha=0.4) 

ax1.set_ylabel('Data') 
ax2.set_ylabel('Ratio (a/b)') 
+0

嘿,那裏。感謝您的解決方案。箱子的寬度如何保持一致?我注意到,隨着統計數據更低或更高,事情開始顯得有點奇怪。 (順便說一下,我的圖中的點只是比值,陰影區域是統計的不確定性。) – d3pd

+0

「箱子的寬度如何保持一致?」 - 您可以控制箱子的寬度在「bar」調用中的垃圾箱:http://matplotlib.org/api/pyplot_api.html?highlight=bar#matplotlib.pyplot.bar – cphlewis

相關問題