Mohsen Ali
Mohsen Ali

Reputation: 701

Histogram bars cannot stacked using matplotlib in python

I have implemented a histogram plot using "matplotlib" in python. I have two variables x1 and x2 with 15 elements in each. when running the code, the histogram bars are not stacked instead they are overlapped, as shown in the figure below.

I want to plot a stacked histogram of the bars of the variables.

The is the code:

x1= [23, 25, 40, 35, 40, 53, 33, 28, 55, 34, 20, 37, 36, 23, 33]
x2= [36, 20, 27, 50, 34, 47, 18, 28, 52, 21, 44, 34, 13, 40, 49]
colors = ['blue', 'orange']
bins = [10,20,30,40,50,60]
fig, (ax0, ax1, ax2) = plt.subplots(nrows=3)

ax0.hist(x1,bins = bins,  histtype='bar',  label=colors[0], rwidth=0.8)
ax0.hist(x2,bins, histtype='bar', stacked=True, label=colors[1], rwidth=0.8)

ax1.hist(x1, bins = bins, histtype='bar',  label=colors[0], rwidth=0.8)
ax1.hist(x2,bins = bins, histtype='bar', stacked=True,  label=colors[1], rwidth=0.8)

ax2.hist(x1, bins = bins, histtype='bar',  label=colors[0], rwidth=0.8)
ax2.hist(x2,bins = bins, histtype='bar', stacked=True,  label=colors[1], rwidth=0.8)

plt.show()

Output enter image description here

Upvotes: 1

Views: 1137

Answers (1)

Sheldore
Sheldore

Reputation: 39052

Try passing both the lists together and use stacked=True. Just passing a single list and using stacked=True doesn't make much sense.

ax0.hist([x1, x2], bins, histtype='bar', stacked=True, label=colors, rwidth=0.8)
ax1.hist([x1, x2], bins, histtype='bar', stacked=True, label=colors, rwidth=0.8)
ax2.hist([x1, x2], bins, histtype='bar', stacked=True, label=colors, rwidth=0.8)

enter image description here

Upvotes: 1

Related Questions