Используйте pandas
Вариант 1
import pandas as pd
import matplotlib.pyplot as plt
from itertools import zip_longest
# data
labels = ['G1', 'G2', 'G3', 'G4']
male = [1, 3, 10, 20]
female = [2, 7]
# zip lists together
data = list(zip_longest(male, female, labels))
# create dataframe from data
df = pd.DataFrame(data, columns=['male', 'female', 'labels'])
male female labels
0 1 2.0 G1
1 3 7.0 G2
2 10 NaN G3
3 20 NaN G4
# plot
p = df.plot.bar()
ticks, labels = plt.xticks()
xlabels = df.labels.tolist()
plt.xticks(ticks=ticks, labels=xlabels, rotation=0)
plt.show()
Option 2
import pandas as pd
import matplotlib.pyplot as plt
# data
labels = ['G1', 'G2', 'G3', 'G4']
male = [1, 3, 10, 20]
female = [2, 7]
# create a dataframe from the lists
df = pd.DataFrame([male, female], columns=labels, index=['male', 'female'])
G1 G2 G3 G4
male 1 3 10.0 20.0
female 2 7 NaN NaN
# plot
df.plot.bar()
введите описание изображения здесь