使用 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中文网其他相关文章!