于是在網(wǎng)上找到了如下代碼:import matplotlib.pyplot as pltimport matplotlibmatplotlib.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)這是輸出:我想知道將它們組合起來(lái)的最佳方式是什么,這樣爸爸、媽媽、兄弟等每個(gè)人都有兩個(gè)堆疊的條形圖?我在網(wǎng)上和 Stack Overflow 上的其他地方遇到過(guò)一堆其他分組堆疊條形碼,但它們要求您迭代地定義每個(gè)條形的值,而理想情況下我只想引用數(shù)據(jù)框名稱 'plotdata ' 和 'plotdata2' 就像上面的代碼一樣。
1 回答

慕哥9229398
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
對(duì)于兩組,您可以position相應(yīng)地傳遞和調(diào)整寬度:
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)
輸出:
添加回答
舉報(bào)
0/150
提交
取消