如何用箭头绘制轴线?

时间:2018-01-06 08:53:39

标签: python matplotlib

我想在一个特定的数据坐标处添加一个axvline,该坐标以箭头开头(并选择一个向上指向的箭头,该箭头终止于该图的顶部或向下箭头)它终止于图的底部,或两者兼而有之。)

e.g。

fig, ax = plt.subplots()
ax.plot([1,2,3])
ax.axvline(1.5, arrow_head=[True,False])

会给出一条垂直线,底部有一个箭头,但顶部没有箭头(即向下箭头)。

我没有看到在axvline内直接执行此操作的方法,但我可以通过ax.arrow()和混合转换(x的数据坐标和y的轴坐标)获得大部分内容):

import matplotlib.pyplot as plt
import matplotlib.transforms as transforms

fig, ax = plt.subplots()
ax.plot([1,2,3],[1,4,9])

mytrans = transforms.blended_transform_factory(ax.transData, ax.transAxes)
ax.arrow(2.5,0,0,1,transform=mytrans,head_width=0.1,length_includes_head=True)

image of output of axvline-as-arrow

我的问题:
1)有更简单/更清洁的方法吗?
2)你怎么用这种方式制作一个双头箭?

1 个答案:

答案 0 :(得分:0)

我只是偶然发现了一个相同的问题,并认为仍然没有直接的方法使用const data = Array.from({ length: 20 }).map((_, idx) => ({ node: { id: idx + 1, display_url: `https://example.com/post/${idx + 1}` } })); console.log("example", data[0]); const temp = data .filter((item, idx) => idx < 12) // destruct property of an object .map(({ node: { id, display_url } }) => { console.log(id, display_url); return { id, display_url }; }); console.log("result", temp[0]);ax.axvline()来做到这一点。 作为一种启用双向箭头(以及更多)的解决方法,我使用了

ax.arrow()

给出以下输出:
arrow example