如标题所述,我想绘制一条注解线,将注解点(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
函数的文档,我找不到任何选项可以实现所需的结果。除了分别绘制直线和文本之外,还有什么方法可以实现所需的行为?
1条答案
按热度按时间ubof19bj1#
使用
arrowprops
内的relpos
键...arrowprops=dict(arrowstyle="-", relpos=(1., 1.))
个的数据