如何让箭头在Python的指定坐标处开始/结束?

Tom*_*gal 5 python plot matplotlib

我试图使用matplotlib的注释在两端绘制带箭头的线条.但是当我绘制它们时,箭头头不会在指定的坐标处开始或结束,如图所示.提示应该以0.6和0.8开始和结束,但它们不会.

在此输入图像描述

可重现的代码

import matplotlib.pyplot as plt
fig = plt.figure(figsize = (5, 5))
plt = plt.subplot(111)
plt.axvline(0.6)
plt.axvline(0.8)
plt.axhline(0.6)
plt.axhline(0.8)

plt.annotate('', xy = (0.6, 0.33),  xycoords = 'axes fraction', \
    xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))

plt.annotate('', xy = (0.33, 0.6),  xycoords = 'axes fraction', \
    xytext = (0.33, 0.8), textcoords = 'axes fraction', fontsize = 7, \
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))

fig.savefig('arrow_head.pdf')
Run Code Online (Sandbox Code Playgroud)

为什么会这样?以及如何获得在相应坐标处开始或结束的提示?

Amy*_*den 10

根据这里的文档,路径被给定的参数缩小,shrinkA并且shrinkB可能在箭头指向某物时提供一点间距.默认值为2,因此如果将它们设置为0,则间距应该消失.像这样:

plt.annotate('', xy = (0.6, 0.33),  xycoords = 'axes fraction', \
    xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->', shrinkA = 0, shrinkB = 0))
Run Code Online (Sandbox Code Playgroud)

带有线条和箭头的图形