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

2024-10-02 14:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用matplotlib的注释绘制两端带有箭头的直线。但当我绘制它们时,箭头的尖端并没有在图中所示的指定坐标处开始或结束。提示应该从0.6和0.8开始和结束,但它们不是。在

enter image description here

可复制代码

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')

为什么会这样?如何让提示在各自的坐标处开始或结束?


Tags: matplotlibfig绘制plt箭头xyannotateaxes
1条回答
网友
1楼 · 发布于 2024-10-02 14:16:32

根据文档here,路径被shrinkA和{}中给定的参数缩小,大概是为了在箭头指向某个对象时提供一点间距。默认值为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))

Graph with lines and arrows

相关问题 更多 >

    热门问题