簡體   English   中英

Matplotlib:如何繪制兩個直方圖的差異?

[英]Matplotlib: how to plot the difference of two histograms?

假設您具有以下數據集:

a=[1, 2, 8, 9, 5, 6, 8, 5, 8, 7, 9, 3, 4, 8, 9, 5, 6, 8, 5, 8, 7, 9, 10]
b=[1, 8, 4, 1, 2, 4, 2, 3, 1, 4, 2, 5, 9, 8, 6, 4, 7, 6, 1, 2, 2, 3, 10]

說你產生他們的直方圖:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1,2,figsize=(16, 8))

plt.subplot(121)
plot1=plt.hist(a, bins=[0,1,2,3,4,5,6,7,8,9,10],
normed=True,edgecolor='k',linewidth=1.0,color='blue')
plt.title("a")

plt.subplot(122)
plot2=plt.hist(b, bins=[0,1,2,3,4,5,6,7,8,9,10],
normed=True,edgecolor='k',linewidth=1.0,color='green')
plt.title("b")

plt.show()

在此處輸入圖片說明

您如何生成具有相同垃圾箱的條形圖,並且對於高度,兩個直方圖之間的差異?

如果您執行以下操作:

 diff=plt.bar([1,2,3,4,5,6,7,8,9,10], 
             height=(plot1[0]-plot2[0]), edgecolor='black', 
             linewidth=1.2, color='red',width = 1) 
 plt.title("a-b")

x軸上的值與容器不對齊。 如何解決這個問題? 在此處輸入圖片說明

好的,如果我正確地理解了您的問題,則解決方案非常簡單-如果您將差值的bin設置為從0開始(如前兩個直方圖所示),並將align設置為edge,則似乎效果很好。

diff=plt.bar([0,1,2,3,4,5,6,7,8,9], 
             height=(plot1[0]-plot2[0]), edgecolor='black', 
             linewidth=1.2, color='red',width = 1, align = 'edge') 
plt.title("a-b")
plt.show()

看到我的輸出圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM