用Python绘制向量数组(pyplot)

2024-06-02 06:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用pyplot绘制一个大数组的向量。现在我有

import matplotlib.pyplot as plt
import numpy as np
import operator

t = np.arange(0, np.pi, .01)


def pos1(t):
    x1 = .72 * np.cos(13*t)
    y1 = .72 * np.sin(13*t)
    return x1, y1


def pos2(t):
    x2 = np.cos(8*t)
    y2 = np.sin(8*t)
    return x2, y2


def vec(t):
    x1 = pos1(t)[0]
    x2 = pos2(t)[0]
    y1 = pos1(t)[1]
    y2 = pos2(t)[1]
    x = np.subtract(x1, x2)
    y = np.subtract(y1, y2)
    return x, y


X = pos2(t)[0]
Y = pos2(t)[1]
U = vec(t)[0]
V = vec(t)[1]

plot1 = plt.figure()
plt.quiver(X, Y, U, V, headlength=4)
plt.show(plot1)

其中pos1(t)pos2(t)和{}是返回([a,...,z],[a1,...,z1])形式的元组的函数。在

这个图给了我一些接近我想要的东西,但是向量的长度都是错误的。这两个函数,pos1(t),pos2(t)返回一个特定曲线上的点的元组,vec(t)函数是它们的区别,这将导致从第一条曲线上的一个点到第二条曲线上的一个点的向量。我的计划有正确的方向,但没有规模。在

enter image description here


Tags: 函数importreturndefnpplt向量曲线
1条回答
网友
1楼 · 发布于 2024-06-02 06:19:17

quiver处理箭头的长度。似乎quiver不是您需要的。在

使用常规plot:

import numpy as np
import matplotlib.pyplot as plt


t = np.arange(0, 2 * np.pi, 0.01)
x0 = np.sin(8 * t)
y0 = np.cos(8 * t)
x1 = 0.72 * np.sin(13 * t)
y1 = 0.72 * np.cos(13 * t)

data = np.column_stack((x0, x1, y0, y1)).reshape(-1, 2)

plt.plot(*data, color='black')
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

结果:

Result原创:

Original

相关问题 更多 >