对于粒子位置 (x(t),y(t)) 的参数图,是否可以使用pgfplots
沿时间等距绘制箭头来指示行进方向?
例如,对于 (x(t),y(t)) = (t,t^2),我知道如何生成长度等距的箭头:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{decorations.markings}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines = middle,smooth,xlabel = $x$, ylabel =$y$, minor tick num =1, grid=both, unit vector ratio*=1 1,enlargelimits = true]
\addplot[thick, variable=\t, domain=0:2, decoration={
markings,
mark=between positions 0.2 and 0.99 step 2em with {\arrow [scale=1.5]{stealth}}
}, postaction=decorate] ({t^2}, {t^4});
\end{axis}
\end{tikzpicture}
\end{document}
屈服
但是我可以获得恒定的时间间距吗,类似于:
答案1
您可以使用quiver
随附的绘图处理程序pgfplots
。quiver
绘图处理程序在每个输入样本处绘制箭头。
为此,它需要像往常一样输入坐标和每个输入坐标(即 x、y、u、v)的箭头坐标。
就您而言,我们可以轻松对所有所需值进行采样。由于您unit vector ratio*=1 1
的列表中有,我们可以将所有箭头标准化为长度 0.1,如下所示:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=14cm,
axis lines = middle,smooth,xlabel = $x$, ylabel =$y$, minor tick num =1, grid=both, unit vector ratio*=1 1,enlargelimits = true]
\addplot[smooth, thick, -stealth,variable=\t, domain=0:2]
({t^2}, {t^4});
\def\NORM{sqrt((2*t)^2 + (4*t^3)^2)}
\addplot[thick, red,-stealth,samples=12,variable=\t, domain=0.1:2,quiver={
u=2*t/\NORM, v=4*t^3/\NORM,
scale arrows=0.1,
}]
({t^2}, {t^4});
\end{axis}
\end{tikzpicture}
\end{document}
是\NORM
向量 的向量范数(u,v)
;与 一起scale arrows=0.1
,我们得到了想要的效果。这里,我们需要二 \addplot
语句:一个绘制情节本身,另一个仅绘制箭头。
为了进行比较,以下是相同的图scale arrows=1
: