matplotlib.pyplot中的箭头

K. *_*sen 5 python matplotlib

我无法使箭头显示如我所愿。这是我要执行的操作的一个示例:

import matplotlib.pyplot as plt
import numpy as np

b = np.arange(5)*-1E-4
a = np.arange(5)

fig, ax = plt.subplots()
ax.plot(a,b, linewidth=3, color="k") 
plt.arrow(1,-0.00010,0,-0.00005, shape='full', lw=3, length_includes_head=True, head_width=.01)
plt.show()
Run Code Online (Sandbox Code Playgroud)

据我了解,这应该会产生一个箭头,起始于(1,-0.00010)并终止于(1,-0.00015),但是结果是一条更长的线,不再像箭头一样出现,并且不再以正确的观点。

在此处输入图片说明

Dav*_*idG 15

由于您使用的是如此小的比例,因此您未明确传递给的某些参数plt.arrow将使用其默认值,在您的情况下,这不会产生很好的结果。

查看文档,如果没有传递宽度值,则默认值为 0.001,则头部宽度将为 0.003,头部长度将为 0.0015。因为使用默认值的头部宽度太小,而头部长度太大,你会在问题中看到输出

因此,您需要传入参数head_widthhead_length

plt.arrow(1, -0.00010, 0, -0.00005, length_includes_head=True,
          head_width=0.08, head_length=0.00002)
Run Code Online (Sandbox Code Playgroud)

这使:

在此处输入图片说明


Mar*_*are 7

您可以使用注释绘制箭头。matplotlib 文档

a = np.linspace(-2,2, 100)
plt.plot(a, a**2)
plt.annotate("here", xy=(0, 0), xytext=(0, 2), arrowprops=dict(arrowstyle="->"))
Run Code Online (Sandbox Code Playgroud)