对数对数图中的Matplotlib箭头

6

我正在尝试使用matplotlib在loglog图中绘制箭头,它看起来像这样:

enter image description here

我知道有人建议关闭坐标轴(Matplotlib: Draw a vertical arrow in a log-log plot),但我确实需要坐标轴。此外,该建议似乎没有改变任何内容(除了关闭坐标轴,如预期的那样)。

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)

目前我的解决方法是创建一个不可见的插图(即:轴关闭)并在其中使用线性轴环境绘制箭头,这样可以实现,但是有点不太方便。是否有更简单的方法?或者人们建议在完成主要绘图后使用inkscape等工具添加这些额外的功能?

1个回答

7
您可以使用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()

enter image description here

请注意,您可能需要调整轴限制以适应箭头进入图表。在这里,我不得不更改ylim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接