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吗?