在功能图中添加箭头以显示其方向

时间:2018-08-04 11:38:38

标签: python python-3.x matplotlib plot

我想在矢量场中绘制路径(圆),并通过场(线积分)计算在路径上完成的功。为了直观地看到这一点,重要的是要查看圆路径的前进方向。所以我想知道是否有一种方法可以在圆上(例如每20个点)显示箭头?

代码如下:

import matplotlib.pyplot as plt
import numpy as np

t= np.linspace(0, 2*np.pi, 100)
x= np.cos(t)
y= np.sin(t)

X= Y = np.arange(-2,2,0.2)
X, Y = np.meshgrid(X,Y)
I = Y
J = -X

plt.figure()
plt.plot(x,y)
plt.quiver(X, Y, I, J)
plt.xlabel('x')
plt.ylabel('y')
plt.show()

我在另一个问题上看到了这张照片,但是答案对我来说不起作用(而且我的声誉还不够高,无法对此发表评论或寻求帮助)
 enter image description here

该问题的链接:Arrow on a line plot with matplotlib

PS。
Python 3.6并使用最新版本。

2 个答案:

答案 0 :(得分:1)

以下方法对曲线上的值进行采样,计算切线的方向,并在绘制的曲线上覆盖一个短箭头:

sed 's/gene_name "[^"]*"; //' file

结果如下:

enter image description here

答案 1 :(得分:0)

在@Reblochon Masque的回答之后,我在一个循环中编写了他的代码,只是为了使其看起来更好,并且您可以随意采样任意数量的箭头(对于任何想使用它的人):

arrows = 6   # Number of arrows we want
p = []

# Coordinates for arrow 
xs_  = []
ys_  = []
dxs_ = []
dys_ = []

for i in range(arrows):
    p.append(int(i/arrows*len(t))) # Equally spaced intervals
    xs_.append(y[p[i]+1])
    ys_.append(x[p[i]+1])
    dxs_.append(y[p[i]]-y[p[i]+1])
    dys_.append(x[p[i]]-x[p[i]+1])
    plt.arrow(xs_[i],ys_[i],dxs_[i],dys_[i],shape='full', lw=0, length_includes_head=True, head_width=0.12)