如何强制Matplotlib注释线连接xy与xytext坐标点?
解决Matplotlib注释线对齐问题
当设置ha='right'这类非居中对齐时,plt.annotate默认会将箭头连接到文本的边界框边缘,而非xytext指定的坐标点,导致连线偏移。无需分开绘制注释线与文本,只需修改arrowprops参数即可解决:
import matplotlib.pyplot as plt plt.annotate('some text', xy=(5, 0), xytext=(5, -3), arrowprops=dict(arrowstyle="-", patchB=None, shrinkB=0), fontsize=6, va='top', ha='right', xycoords='data', textcoords='data') # 演示用附加代码 plt.plot([5, 5], [0, -3], 'r--') plt.scatter([5], [0], color='red', label='xy point') plt.scatter([5], [-3], color='blue', label='xytext point') plt.legend() plt.grid() plt.show()
参数说明
patchB=None:取消箭头与文本边界框的关联,强制箭头直接指向xytext坐标点shrinkB=0:关闭箭头末端的收缩效果,确保连线精确贴合xytext点
这样无论设置何种文本对齐方式,注释线都会始终保持xy与xytext之间的直线连接。
内容的提问来源于stack exchange,提问作者Davide
相关产品推荐
相关产品推荐

