Python 如何制作x轴上有两个分类的堆叠条形图?

Python 如何制作x轴上有两个分类的堆叠条形图?,python,Python,我正在尝试创建一个x轴上有两个类别的堆叠条形图,在本例中,我希望它按组,然后按年 我目前正在PyCharm中使用Python 3。我已经在excel中创建了一个我的目标模型 如果我在Excel中使用我的示例代码并创建一个透视图,我就可以创建我正在寻找的精确图形。我已将Excel中的图表和示例数据放在Google工作表上,以便您可以查看: 假设您将数据保存到名为tmp.csv(导出到Excel中的csv)的csv文件中,则此脚本可以构建您想要的图形 import pandas as pd from

我正在尝试创建一个x轴上有两个类别的堆叠条形图,在本例中,我希望它按组,然后按年

我目前正在PyCharm中使用Python 3。我已经在excel中创建了一个我的目标模型

如果我在Excel中使用我的示例代码并创建一个透视图,我就可以创建我正在寻找的精确图形。我已将Excel中的图表和示例数据放在Google工作表上,以便您可以查看:


假设您将数据保存到名为
tmp.csv
(导出到Excel中的
csv
)的
csv
文件中,则此脚本可以构建您想要的图形

import pandas as pd
from matplotlib import pyplot as plt 

tmp = pd.read_csv('tmp.csv')
tmp_small = tmp.drop(['Group', 'Year'], axis=1)
year = tmp.loc[:, 'Year'].values
group = tmp.loc[:, 'Group'].values[[0, 2, 4]]

fig, ax = plt.subplots(figsize=(8, 6))
palette = ['r', 'g', 'b']

for ind in range(6):
    tmp_values = tmp_small.iloc[ind].values
    for count, item in enumerate(tmp_values):
        offset = np.sum(tmp_values[:count]) if count > 0 else 0
        ax.bar(x=ind, width=0.5, height=item, bottom=offset, color=palette[count])
ax.set_xticks(np.arange(len(year)))
ax.set_xticklabels(year)

ax.set_xlim(-1, 6.5)
ax.text(0.3, -10, group[0])
ax.text(2.3, -10, group[1])
ax.text(4.3, -10, group[2])
产出数字为


@RK约翰有什么问题吗?您好,感谢您的回复。我的问题不是创建堆叠条形图,而是创建一个包含一个组和一个子组的堆叠条形图。在我的示例中,我使用了组和年,因此每个组都将被定位在x轴上,然后每年都有一个堆叠的标签,即2018年和2019年,然后这两个条所属的组有一个x轴标签。@RK Johns您好,我已经修改了我的答案,您现在可以检查它。这就是mate。text部分是我所需要的,我应该能够将它添加到我的代码中!