Python 3.x 将条形图文本格式设置为小数点后2位

Python 3.x 将条形图文本格式设置为小数点后2位,python-3.x,pandas,matplotlib,Python 3.x,Pandas,Matplotlib,我的工作代码如下: active_parking = pd.pivot_table(parking[parking['Bldg Status'] == 'ACTIVE'], index='Owned/Leased', values='Total Parking Spaces', aggfunc='mean'

我的工作代码如下:

active_parking = pd.pivot_table(parking[parking['Bldg Status'] == 'ACTIVE'],
                                index='Owned/Leased',
                                values='Total Parking Spaces',
                                aggfunc='mean'
                                )
active_parking['% of Total'] = ((active_parking['Total Parking Spaces'] / active_parking['Total Parking Spaces'].sum()) * 100)
print(active_parking, '\n')

active_parking.plot(kind='bar')
for i, number in enumerate(active_parking['Total Parking Spaces']):
    plt.text(x=i, y=number, s=number, horizontalalignment='center', weight='bold')
for i, number in enumerate(active_parking['% of Total']):
    plt.text(x=i, y=number, s=number, horizontalalignment='left', weight='bold')
plt.xticks(rotation=0)
plt.show()
它产生这个输出:

              Total Parking Spaces  % of Total
Owned/Leased                                  
LEASED                   44.707349   37.546059
OWNED                    74.365997   62.453941 
但我的情节有两个问题我似乎无法解决:

1)  I want the displayed value on top of each bar limited to two decimal places.
2)  After solving the above issue, how do I center the value over each bar?

即使我使用以下命令裁剪文本显示:pd.options.display.float_format='{.2f}'。format, 绘图仍显示14位小数。

使用:

active_parking.plot(kind='bar')
for i, number in enumerate(active_parking['Total Parking Spaces']):
    plt.text(x=i-.23, y=number + 0.9, s=round(number, 2), weight='bold')
for i, number in enumerate(active_parking['% of Total']):
    plt.text(x=i+.02, y=number + 0.9, s=round(number, 2), weight='bold')
plt.xticks(rotation=0)
plt.ylim(top=active_parking.values.max() + 8)
plt.show()

这解决了精度问题,但我仍然无法将显示的值集中在每个条上。我得到的最接近的结果是使用“右”表示总停车位,使用“左”表示总停车位的%。而这些只起作用,因为我有两个专栏。如果我有两个以上,那就不行了。有没有办法指定每一个值都在每一列的中心?@MarkS-你能检查一下吗?
@jezrael
可能我缺乏经验,但我尝试了你发送的链接,但结果更糟。文本现在沿x轴(不像以前那样位于每个条的顶部)移动,并相对于每个条向右移动。我试图调整一些设置,但输出从未改变。@MarkS-Answer被编辑,我手动向
x
y
值添加一些常量,还设置
ylim
8
添加到所有数据的最大值。
@jezrael
现在我明白了。需要操纵“x”和“y”值。加上ylim参数。非常感谢。