用matplotlib同时绘制两个直方图

我使用文件中的数据创build了一个直方图,没有任何问题。 现在我想在同一个直方图中叠加另一个文件中的数据,所以我做了类似的事情

n,bins,patchs = ax.hist(mydata1,100) n,bins,patchs = ax.hist(mydata2,100) 

但是问题在于,对于每个intervale来说,只有价值最高的酒吧出现,另一个是隐藏的。 我想知道我怎么能用不同的颜色同时绘制直方图

在这里你有一个工作的例子:

 import random import numpy from matplotlib import pyplot x = [random.gauss(3,1) for _ in range(400)] y = [random.gauss(4,2) for _ in range(400)] bins = numpy.linspace(-10, 10, 100) pyplot.hist(x, bins, alpha=0.5, label='x') pyplot.hist(y, bins, alpha=0.5, label='y') pyplot.legend(loc='upper right') pyplot.show() 

在这里输入图像描述

接受的答案给出了带有重叠条的直方图的代码,但是如果你想让每个条并排(如我所做的那样),请尝试下面的变化forms:

 import numpy as np import matplotlib.pyplot as plt plt.style.use('seaborn-deep') x = np.random.normal(1, 2, 5000) y = np.random.normal(-1, 3, 5000) data = np.vstack([x, y]).T bins = np.linspace(-10, 10, 30) plt.hist(data, bins, alpha=0.7, label=['x', 'y']) plt.legend(loc='upper right') plt.show() 

在这里输入图像描述

参考: http : //matplotlib.org/examples/statistics/histogram_demo_multihist.html

这里有一个简单的方法,用不同的颜色在同一个图上绘制两个直方图:

 def plotHistogram(p, o): """ p and o are numpy arrays with the values you want to plot the histogram of """ plt.hist([p, o], color=['g','r'], alpha=0.8, bins=50) plt.show() 

以防万一你有pandas( import pandas as pd )或使用它可以:

 test = pd.DataFrame([[random.gauss(3,1) for _ in range(400)], [random.gauss(4,2) for _ in range(400)]]) plt.hist(test.values.T) plt.show()