我已经在堆叠的条形图上注释了每个条形,但是似乎无法获得与条形位置相同的注释。
这是我的代码:
for i in ax_mult.patches:
width,height=i.get_width(),i.get_height()
x,z =i.get_xy()
ax_mult.annotate(str(i.get_height()),(i.get_x()+.30*width,i.get_height()+.1*height))
答案 0 :(得分:2)
我想您的主要问题是,您在y
上沿1.1 * i.get_height()
方向有效地放置了文本,而没有考虑初始偏移量i.get_y()
。
尝试一下:
for i in ax_mult.patches:
ix,iy=i.get_x(),i.get_y() ## gives you the bottom left of each patch
width,height=i.get_width(),i.get_height() ## the width & height of each patch
## to place the annotation at the center (0.5, 0.5):
ax.annotate(str(height),(ix+0.5*width, iy+0.5*height),ha="center",va="center")
## alternatively via ax.text():
# ax.text(ix+.5*width,iy+.5*height,height,ha="center",va="center" )
请注意,您可能需要以良好的偏移量“游玩”,尤其是在y方向上。 ha="center",va="center"
参数将文本精确地对准所选坐标(水平:ha和垂直:va),如果您想放置标签,例如,可以方便使用。在贴片顶端下方对齐:
ax.annotate(str(height),(ix+0.5*width, iy+1.0*height),ha="center",va="top")
或恰好在补丁程序的顶端上方
ax.annotate(str(height),(ix+0.5*width, iy+1.0*height),ha="center",va="bottom")