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)