猿问

将两个堆积条形图组合成一个分组堆积条形图

于是在网上找到了如下代码:


import matplotlib.pyplot as plt

import matplotlib


matplotlib.style.use('ggplot')


plotdata = pd.DataFrame({

    "2018_m":[40, 12, 10, 26, 36],

    "2019_m":[19, 8, 30, 21, 38],

    "2020_m":[10, 10, 42, 17, 37]

    }, index=["Dad", "Mam", "Bro", "Sis", "Me"]

)


plotdata2 = pd.DataFrame({

    "2018_y":[20, 22, 10, 34, 12],

    "2019_y":[12, 19, 27, 35, 14],

    "2020_y":[21, 31, 52, 20, 34]

    }, index=["Dad", "Mam", "Bro", "Sis", "Me"]

)


stacked_data = plotdata.apply(lambda x: x*100/sum(x), axis=1)

stacked_data2 = plotdata2.apply(lambda x: x*100/sum(x), axis=1)

stacked_data.plot(kind="bar", stacked=True)

stacked_data2.plot(kind="bar", stacked=True)

这是输出:

我想知道将它们组合起来的最佳方式是什么,这样爸爸、妈妈、兄弟等每个人都有两个堆叠的条形图?我在网上和 Stack Overflow 上的其他地方遇到过一堆其他分组堆叠条形码,但它们要求您迭代地定义每个条形的值,而理想情况下我只想引用数据框名称 'plotdata ' 和 'plotdata2' 就像上面的代码一样。



元芳怎么了
浏览 223回答 1
1回答

慕哥9229398

对于两组,您可以position相应地传递和调整宽度:fig, ax = plt.subplots()stacked_data.plot(kind="bar", stacked=True, width=0.4,                   ax=ax, position=0)stacked_data2.plot(kind="bar", stacked=True, width=0.4,                    ax=ax, position=1, hatch='//')ax.set_xlim(right=len(stacked_data)-0.5)输出:
随时随地看视频慕课网APP

相关分类

Python
我要回答