【发布时间】:2016-05-03 09:28:33
【问题描述】:
在这里,我有一个参数方程。
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
t = np.linspace(0,2*np.pi, 40)
# Position Equation
def rx(t):
return t * np.cos(t)
def ry(t):
return t * np.sin(t)
# Velocity Vectors
def vx(t):
return np.cos(t) - t*np.sin(t)
def vy(t):
return np.sin(t) + t*np.cos(t)
# Acceleration Vectors
def ax(t):
return -2*np.sin(t) - t*np.cos(t)
def ay(t):
return 2*np.cos(t) - t*np.sin(t)
fig = plt.figure()
ax1 = fig.gca(projection='3d')
z = t
ax1.plot(rx(z), ry(z), z)
plt.xlim(-2*np.pi,2*np.pi)
plt.ylim(-6,6)
#ax1.legend() # no labels
plt.show()
所以我有这个创建这个图表的参数方程。
我已经在我的代码中定义了上面的速度和加速度参数方程。
我想要做的是在上面的位置图中在定义的点处绘制加速度和速度矢量。 (Id est, t = pi/2, 3pi/2, 2pi)
类似这样的:
Plotting a 3d cube, a sphere and a vector in Matplotlib
但我想做一些更直接的事情,因为我必须将每个点 t 定义为两个方程。
这样的事情可能吗?我只能找到向量场,什么不行。
谢谢。
编辑问题
# t = pi/4
t_val_start_pi4 = np.pi/4
vel_start_pi4 = [rx(t_val_start_pi4), ry(t_val_start_pi4), t_val_start_pi4]
vel_end_pi4 = [rx(t_val_start_pi4 ) + vx(t_val_start_pi4 ), ry(t_val_start_pi4 )+vy(t_val_start_pi4 ), t_val_start_pi4 ]
vel_vecs_pi4 = (t_val_start_pi4 , vel_end_pi4)
vel_arrow_pi4 = Arrow3D(vel_vecs_pi4[0],vel_vecs_pi4[1], vel_vecs_pi4[2], mutation_scale=20, lw=1, arrowstyle="-|>", color="b")
axes.add_artist(vel_arrow_pi4)
它会给我一个错误说Tuple out of index
【问题讨论】:
-
下面展示了如何绘制箭头。一旦计算出向量尾部的位置、向量的长度、向量的方向,并确定向量的样式,就可以使用它来绘制向量:matplotlib.org/examples/pylab_examples/arrow_simple_demo.html
-
那么第一个零代表尾部位置,下一个代表向量长度吗?
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, fc='k', ec='k') -
@DarthLazar - 请参阅documentation 了解该方法
-
@cricket_007。好的,但是这对于 3d 情节如何运作?
-
可以在官方文档上找到任何内容,但感谢 StackOverflow 已经为您提供了答案stackoverflow.com/questions/11140163/…
标签: python vector matplotlib plot