Combining two stacked bar plots for a grouped stacked bar plot(合并两个叠加条形图以形成分组叠加条形图)
本文介绍了合并两个叠加条形图以形成分组叠加条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我在网上找到了以下代码:
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’。
提前谢谢!
推荐答案
对于两个组,可以传递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)
输出:
这篇关于合并两个叠加条形图以形成分组叠加条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:合并两个叠加条形图以形成分组叠加条形图


猜你喜欢
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01