【发布时间】:2019-11-18 05:39:51
【问题描述】:
我试图从普通条形图更改为堆叠条形图,但结果有问题。
数据:
Total Monthly Actual Hours Total Monthly Work Hours
Activity Month
Apr-19 35381.25 42592
May-19 31722.50 44528
Jun-19 27708.50 38720
Jul-19 34283.50 44528
Aug-19 32225.60 42592
这是正常的图表:
ax = dfWorkActual.plot(kind='bar')
ax.tick_params(rotation = 0)
for date, (p, q) in enumerate(zip(dfWorkActual["Total Monthly Actual Hours"],dfWorkActual["Total Monthly Work Hours"])):
ax.annotate(f"{round(p,2)}\n({(p/q)*100:.0f}%)", (date-0.25, p*1.02))
ax.annotate(f"{round(q,2)}\n({(q/q)*100:.0f}%)", (date, q*1.02))
plt.ylabel('Work Hours')
plt.xlabel('Month')
plt.title("Chart 5: (Total Monthly Work Hours + Total Actual Work Hours) vs Month", fontweight='bold')
这是我添加stacked=True后的结果:
ax = dfWorkActual.plot(kind='bar')
ax.tick_params(rotation = 0)
for date, (p, q) in enumerate(zip(dfWorkActual["Total Monthly Actual Hours"],dfWorkActual["Total Monthly Work Hours"])):
ax.annotate(f"{round(p,2)}\n({(p/q)*100:.0f}%)", (date-0.25, p*1.02))
ax.annotate(f"{round(q,2)}\n({(q/q)*100:.0f}%)", (date, q*1.02))
# for p in ax.patches:
# ax.annotate(str(round(p.get_height(), 2)), (p.get_x() * 1.005, p.get_height() * 1.005))
plt.ylabel('Work Hours')
plt.xlabel('Month')
plt.title("Chart 5: (Total Monthly Work Hours + Total Actual Work Hours) vs Month", fontweight='bold')
【问题讨论】: