Home > Software design >  How to plot two grouped bar charts next to each others
How to plot two grouped bar charts next to each others

Time:05-31

Here is the code to plot one grouped bar chart:

import matplotlib.pyplot as plt
import numpy as np


labels = ['G1', 'G2', 'G3', 'G4', 'G5']
men_means = [20, 34, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]

x = np.arange(len(labels))  # the label locations
width = 0.35  # the width of the bars

fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, men_means, width, label='Men')
rects2 = ax.bar(x   width/2, women_means, width, label='Women')

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(x, labels)
ax.legend()

ax.bar_label(rects1, padding=3)
ax.bar_label(rects2, padding=3)

fig.tight_layout()

plt.show()

However, I'd like to know how to plot two of these grouped bar charts next to each others, like this: enter image description here

Thanks in advance.

CodePudding user response:

IIUC, what you want is plt.subplots(1, 2)

fig, axes = plt.subplots(1, 2)

for ax in axes:
    rects1 = ax.bar(x - width/2, men_means, width, label='Men')
    rects2 = ax.bar(x   width/2, women_means, width, label='Women')

    # Add some text for labels, title and custom x-axis tick labels, etc.
    ax.set_ylabel('Scores')
    ax.set_title('Scores by group and gender')
    ax.set_xticks(x, labels)
    ax.legend()

    ax.bar_label(rects1, padding=3)
    ax.bar_label(rects2, padding=3)

fig.tight_layout()

enter image description here

  • Related