首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在用pyplot.arrows绘制向量。是否有适当的方法将矢量末端与虚线连接起来?

我在用pyplot.arrows绘制向量。是否有适当的方法将矢量末端与虚线连接起来?
EN

Stack Overflow用户
提问于 2020-11-18 11:07:16
回答 1查看 64关注 0票数 1

我正在使用pyplot箭头绘制几个向量,如下所示:

代码语言:javascript
复制
M = np.array([[Vx, Vy], [Vx, 0], [0, Vy], [ax, ay], [ax, 0], [0, ay],
              [-Vx + ax, -Vy + ay],
              ])
rows, cols = M.T.shape

colors = ['b', 'b', 'b', 'r', 'r', 'r', 'g']
labels = ['V, at', 'Vx', 'Vy', 'a', 'ax', 'ay', 'an']

for i, l in enumerate(range(0, cols)):
    plt.axes().arrow(X, Y, M[i, 0], M[i, 1], head_width=0.5, head_length=0.5, color=colors[i])
    plt.text(X + M[i, 0] - 0.7, Y + M[i, 1] + 0.7, s=labels[i],
             bbox={'facecolor': str(colors[i]), 'alpha': 0.5})

我想将向量的末端与虚线连接起来,以表明一些向量实际上是另外两个向量的总结:

我试着这样做:

代码语言:javascript
复制
x1, y1 = [Vx + 1, Vx + 1], [-Vy + 2, Y]
x2, y2 = [Vx + 1, X], [-Vy + 2, -Vy + 2]
plt.plot(x1, y1, '--', color='c')
plt.plot(x2, y2, '--', color='c')
x3, y3 = [X, ax + 1], [Y + ay, Y + ay]
x4, y4 = [ax + 1, ax + 1], [Y + ay, Y]
plt.plot(x3, y3, '--', color='m')
plt.plot(x4, y4, '--', color='m')
x5, y5 = [-Vx + ax - 0.5, ax + 1], [-Y - Vy - ay - 0.5, Y + ay]
x6, y6 = [-Vx - ax, ax + 1], [-Vy - ay, Y + ay]
plt.plot(x5, y5, '--', color='y')
plt.plot(x6, y6, '--', color='y')

但行变得有点错误(下图)和我还必须添加数字,如0.5,1等,以使它看起来像样。这样,如果改变矢量坐标值,就会不正确地显示直线。

那么,是否有更好的方法将向量与虚线连接起来?那么,如果我更改坐标,虚线仍将被正确绘制?矢量坐标值是我在本例中使用的:

代码语言:javascript
复制
X = 1
Y = 8.2
Vx = 5.4
Vy = -3.1
V = 6.3
ax = 2.2
ay = -8.8
a = 9.1
at = 6.3
an = 6.6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-18 11:43:55

我想出来了!基本上我只是把坐标放错了方向。以下是正确的代码:

代码语言:javascript
复制
x1, y1 = [X + Vx, X + Vx], [Y + Vy, Y]
x2, y2 = [X + Vx, X], [Y + Vy, Y + Vy]
plt.plot(x1, y1, '--', color='c')
plt.plot(x2, y2, '--', color='c')
x3, y3 = [X, X + ax], [Y + ay, Y + ay]
x4, y4 = [X + ax, X + ax], [Y + ay, Y]
plt.plot(x3, y3, '--', color='m')
plt.plot(x4, y4, '--', color='m')
x5, y5 = [X + ax - Vx, X + ax], [Y + ay - Vy, Y + ay]
x6, y6 = [X + Vx, X + ax], [Y + Vy, Y + ay]
plt.plot(x5, y5, '--', color='y')
plt.plot(x6, y6, '--', color='y')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64891855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档