Я пытаюсь сделать гистограмму с накоплением. Я могу сделать базовую гистограмму:
df = pd.DataFrame({'Y': [1,1,1,1,1,2,3,2],
'X': [2,2,2,2,3,3,3,4]})
Y_1 = df.loc[df['Y'] == 1]
Y_2 = df.loc[df['Y'] == 2]
Count_0 = df.groupby(['X']).size().to_frame('Count').reset_index()
Count_1 = Y_1.groupby(['X']).size().to_frame('Count').reset_index()
Count_2 = Y_2.groupby(['X']).size().to_frame('Count').reset_index()
height_0 = Count_0.Count
height_1 = Count_1.Count
height_2 = Count_2.Count
bars = Count_0.X
fig, (ax1) = plt.subplots(1,1);
y_pos = np.arange(len(bars))
p1 = plt.bar(y_pos, height_0)
for item in ([ax1.title, ax1.xaxis.label, ax1.yaxis.label] +
ax1.get_xticklabels() + ax1.get_yticklabels()):
item.set_fontsize(22)
plt.xlabel('X')
plt.ylabel('Count')
plt.xticks(y_pos, bars)
plt.yticks(np.arange(0, 4.1, 1))
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.show()
plt.clf()
Но когда я пытаюсь сложить его по классу "Y":
p2 = plt.bar(y_pos, height_2, bottom = height_1)
Я получаю:
ValueError: incompatible sizes: argument 'height' must be length 3 or scalar
Я думаю, что проблема может заключаться в том, что есть пустые столбцы с Y = 2 и Y = 3, потому что у этих классов нет экземпляров с X = 2.
Я хотел бы, чтобы X на оси X и Y были цветом, пожалуйста!