首页 >后端开发 >Python教程 >如何用数据值有效地注释 Pandas 条形图?

如何用数据值有效地注释 Pandas 条形图?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-07 19:35:111005浏览

How to Efficiently Annotate Pandas Bar Plots with Data Values?

用数据值注释 Pandas 条形图

使用 Pandas 条形图时,通常需要显示它们代表的数值。本文解决了使用 DataFrame 中的舍入数据值注释条形的问题。

问题:

考虑以下 DataFrame (df):

                 A         B
  value1  0.440922  0.911800
  value2  0.588242  0.797366

目标是用相应的舍入值注释每个条形,如图所示下面:

[带有注释值的条形图图像]

低效方法:

一种常见的注释方法是使用注释函数。然而,正如下面的代码示例所示,这种方法将注释定位在 x 刻度上:

ax = df.plot(kind='bar')
for idx, label in enumerate(list(df.index)):
    for acc in df.columns:
        value = np.round(df.ix[idx][acc], decimals=2)
        ax.annotate(value,
            (idx, value),
            xytext=(0, 15),
            textcoords='offset points')

最佳解决方案:

更有效的解决方案是从轴的补丁中获取数据:

for p in ax.patches:
    ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005))

此代码提取条形高度并将注释放置在条形略上方以

自定义:

要自定义注释,可以调整字符串格式和偏移量。例如:

for p in ax.patches:
    ax.annotate("{:.2f}".format(p.get_height()), (p.get_x() + p.get_width() / 2, p.get_height() * 1.005))

这会将注释置于每个条形的中心,并将高度格式化为小数点后两位。

以上是如何用数据值有效地注释 Pandas 条形图?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn