Python 熊猫用它绘制条形图';绘制的s值

Python 熊猫用它绘制条形图';绘制的s值,python,pandas,matplotlib,Python,Pandas,Matplotlib,如何在图表上绘制下面的数据框及其值和百分比 Activity Month Total Monthly Actual Hours Total Monthly Work Hours 0 Apr-19 35381.25 42592 1 May-19 31722.50 44528 2 Jun-19 27708.50

如何在图表上绘制下面的数据框及其值和百分比

    Activity Month  Total Monthly Actual Hours  Total Monthly Work Hours
0   Apr-19          35381.25                    42592
1   May-19          31722.50                    44528
2   Jun-19          27708.50                    38720
3   Jul-19          34283.50                    44528
4   Aug-19          32225.60                    42592
目前,我只能使用以下代码正常绘制:

display(df.reset_index())

df.plot(kind='bar').tick_params(rotation = 0)
plt.ylabel('Work Hours')
plt.xlabel('Month')

我想把这个图表画成这样:


动态计算百分比的一种方法:

df = pd.DataFrame(...)

ax = df.plot(kind='bar')

ax.tick_params(rotation = 0)

for date, (p, q) in enumerate(zip(df["Total_Monthly_Actual_Hours"],df["Total_Monthly_Work_Hours"])):
    ax.annotate(f"{p}\n({(p/q)*100:.0f}%)", (date-0.25, p*1.02), size=7)
    ax.annotate(f"{q}\n({(q/q)*100:.0f}%)", (date, q*1.02), size=7)

plt.ylabel('Work Hours')
plt.xlabel('Month')

plt.show()

动态计算百分比的一种方法:

df = pd.DataFrame(...)

ax = df.plot(kind='bar')

ax.tick_params(rotation = 0)

for date, (p, q) in enumerate(zip(df["Total_Monthly_Actual_Hours"],df["Total_Monthly_Work_Hours"])):
    ax.annotate(f"{p}\n({(p/q)*100:.0f}%)", (date-0.25, p*1.02), size=7)
    ax.annotate(f"{q}\n({(q/q)*100:.0f}%)", (date, q*1.02), size=7)

plt.ylabel('Work Hours')
plt.xlabel('Month')

plt.show()

Idk可能重复的可能重复我收到此错误的原因------->TypeError:不支持的操作数类型-:“str”和“float”必须告诉哪一行出现此错误。在上面的
set\u中,在绘图上调用索引
,而不是实际的
df
,因此请确保索引和列不是字符串。下面这两行,可能是关于从Apr-19转换到坐标的转换。--------------------------------------------------------------------------------------ax.annotate(f{p}\n({(p/q)*100.0f}%),(date-0.25,p*1.02),size=7)ax.annotate(f{q}\n({(q/q)*100.0f}%),(date,q*1.02,size=7)是您的索引在原始df?Idk中设置为date的吗?我为什么收到此错误------->TypeError:不支持的操作数类型-:'str'和'float',您必须告诉哪一行出现此错误。在上面的
set\u中,在绘图上调用索引
,而不是实际的
df
,因此请确保索引和列不是字符串。下面这两行,可能是关于从Apr-19转换到坐标的转换。--------------------------------------------------------------------------------------ax.annotate(f{p}\n({(p/q)*100.0f}%),(date-0.25,p*1.02),size=7)ax.annotate(f{q}\n({(q/q)*100.0f}%),(date,q*1.02,size=7)您的索引在原始df中设置为date吗?