[英]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")
好的,如果我正确地理解了您的问题,则解决方案非常简单-如果您将差值的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.