Logpp图中的Matplotlib箭头

mzz*_*zzx 4 python matplotlib

我正在尝试使用matplotlib在日志记录图中绘制箭头,如下所示:

在此处输入图片说明

我知道有人建议关闭轴(Matplotlib:在对数对数图中绘制垂直箭头),但是我确实需要轴。另外,该建议似乎没有任何改变(除了按预期关闭轴以外):

plt.figure();plt.loglog([1,10,60],[1,0.1,0.005])
plt.axis('off')
plt.arrow(2,0.002,5,0.098,'k',head_length=0.3)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的工作一直是用线性轴环境创建一个不可见的插图(意思是:轴已关闭),并在插图中绘制箭头,这种方法虽然有效,但确实有点令人不愉快。有没有更简单的方法?还是有人建议通过例如添加这些类型的附加功能。在主图绘制完成后,inkscape?

tmd*_*son 5

您可以使用plt.annotate而不是plt.arrow。在文档中plt.arrow对此进行了说明

生成的箭头受轴长宽比和限制的影响。这可能会产生箭头,该箭头的头部与杆柄不垂直。要创建一个箭头,该箭头的头与茎成直角,请使用annotate()

例如:

import matplotlib.pyplot as plt

plt.figure()
plt.loglog([1,10,60],[1,0.1,0.005])
plt.annotate('', xy=(5, 0.098), xytext=(2, 0.002), 
            arrowprops=dict(facecolor='black', shrink=0.),
            )

plt.ylim(0.001, 10)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

请注意,您可能需要调整轴限制以使箭头适合绘图。在这里我不得不改变ylim