位移与时间图

位移与时间图

我想绘制两个跑步者绕单位长度的圆形跑道跑步的位移与时间图,使其看起来像下面的图片,其中一个跑步者以速度 1 跑步,另一个以速度 3 跑步。 位移与时间图

我知道我可以通过单独放入每条线来做到这一点,但我宁愿用一些巧妙的方法一次性完成,这样放入高速跑步者就不会涉及绘制很多线。我没有制作图表的经验,因为我从未在研究中使用它们。

答案1

有很多方法可以实现这一点,这里是其中一种。非常感谢 albert 向我解释这个问题!

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\newcommand{\Runner}[2][]{
\addplot[no marks,thick,samples=2*#2+1,#1] {0.25*(1-cos(#2*x*360))};
\node[anchor=south,#1] at ({1/(2*#2)},0.5) {#2};
}
\begin{document}
\begin{tikzpicture}
 \begin{axis}[width=12cm,axis lines*=left,domain=0:1]
  \Runner{1};
  \Runner[blue]{3};
 \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

以下是您在评论中询问的内容。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\newcommand{\Runner}[2][]{
\addplot[no marks,thick,samples=2*#2+1,#1] {0.25*(1-cos(#2*x*360))};
\node[anchor=south,#1] at ({1/(2*#2)},0.5) {#2};
}
\begin{document}
\begin{tikzpicture}[declare function={%
myisodd(\x)=mod(int(\x),2);
runner(\x,\y)=0.5*ifthenelse(myisodd(int(2*\y*\x)),1-(2*\y*\x-int(2*\y*\x)),
(2*\y*\x-int(2*\y*\x)));}]
 \begin{axis}[width=12cm,axis lines*=left,domain=0:1]
  \Runner{1};
  \Runner[blue]{3};
  \addplot[red,thick,samples=13] {min(runner(x,3),runner(x,1))};
 \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容