我想在矢量场中绘制路径(圆),并通过场(线积分)计算在路径上完成的功。为了直观地看到这一点,重要的是要查看圆路径的前进方向。所以我想知道是否有一种方法可以在圆上(例如每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()
我在另一个问题上看到了这张照片,但是答案对我来说不起作用(而且我的声誉还不够高,无法对此发表评论或寻求帮助)
该问题的链接:Arrow on a line plot with matplotlib
PS。
Python 3.6并使用最新版本。
答案 0 :(得分:1)
答案 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)