我问这个问题,因为我还没有找到一个关于如何注释分组水平Pandas条形图的工作示例.我知道以下两点:
使用Pandas条形图上的值注释条形图
熊猫,条形图注释
但它们都是关于垂直条形图.即,要么没有水平条形图的解决方案,要么它没有完全工作.
在这个问题上工作了几个星期之后,我终于能够用一个示例代码提出问题,这几乎就是我想要的,而不是100%工作.需要你的帮助才能实现100%的目标.
我们走了,完整的代码在这里上传.结果如下:
你可以看到它几乎正常工作,只是标签没有放在我想要的地方,我不能把它们移到一个更好的地方.此外,由于图表栏的顶部用于显示错误吧,这样我真正想要的是移向y轴的注释文字,很好地排队在y轴的左边或右边,这取决于X -值.例如,这是我的同事可以用MS Excel做的事情:
Python可以用Pandas图表做到这一点吗?
我在上面的url中包含了注释的代码,一个是我的全部 - 我可以做的,另一个是参考(来自In [23]
):
# my all-that-I-can-do def autolabel(rects): #if height constant: hbars, vbars otherwise if (np.diff([plt.getp(item, 'width') for item in rects])==0).all(): x_pos = [rect.get_x() + rect.get_width()/2. for rect in rects] y_pos = [rect.get_y() + 1.05*rect.get_height() for rect in rects] scores = [plt.getp(item, 'height') for item in rects] else: x_pos = [rect.get_width()+.3 for rect in rects] y_pos = [rect.get_y()+.3*rect.get_height() for rect in rects] scores = [plt.getp(item, 'width') for item in rects] # attach some text labels for rect, x, y, s in zip(rects, x_pos, y_pos, scores): ax.text(x, y, #'%s'%s, str(round(s, 2)*100)+'%', ha='center', va='bottom') # for the reference ax.bar(1. + np.arange(len(xv)), xv, align='center') # Annotate with text ax.set_xticks(1. + np.arange(len(xv))) for i, val in enumerate(xv): ax.text(i+1, val/2, str(round(val, 2)*100)+'%', va='center', ha='center', color='black')
请帮忙.谢谢.