matplotlib 强制注解线连接xy和xytext坐标

w8rqjzmb  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(78)

如标题所述,我想绘制一条注解线,将注解点(xy)与文本锚点(xytext)连接起来。
当文本水平对中时,我得到了所需的行为。例如,考虑以下代码:

import matplotlib.pyplot as plt

plt.annotate('some text', xy=(5, 0), xytext=(5, -3), arrowprops=dict(arrowstyle="-"), 
             fontsize=6, va='top', ha='center', xycoords='data', textcoords='data')

# Additional code for illustration purposes
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()

字符串
此代码生成以下图像:


的数据
一旦水平对齐发生变化,例如:

plt.annotate('some text', xy=(5, 0), xytext=(5, -3), arrowprops=dict(arrowstyle="-"), 
             fontsize=6, va='top', ha='right', xycoords='data', textcoords='data')


我得到以下不希望的结果(我希望注解线保持垂直):



查看plt.annotate函数的文档,我找不到任何选项可以实现所需的结果。除了分别绘制直线和文本之外,还有什么方法可以实现所需的行为?

ubof19bj

ubof19bj1#

使用arrowprops内的relpos键...
arrowprops=dict(arrowstyle="-", relpos=(1., 1.))


的数据

相关问题