TikZ のリスト内の 2 つのポイント間に矢印を描く

TikZ のリスト内の 2 つのポイント間に矢印を描く

私はtkizを使って点と矢印をつなげようとしています。矢印で動きを示しながら、時間の関数として何かの動きを示そうとしています。x座標のリストを用意して\foreachを使って描画するだけで、必要な場所に点を配置できます。検索してみましたが、やりたいことに関するものは見つかりませんでした。矢印を描くためのコードは次のとおりです。

\foreach \x in {0,1.2,2.4,3.6,4,4.4,4.8,6.8,8.8}
    \draw[->] (\x,0.5) -- (\x+1,0.5);

しかし、これは次の座標に移動するのではなく、座標に長さ 1 の矢印を描くだけです。 完全なコードの出力

ご協力いただければ幸いです。

答え1

ここでは 2 つの異なるアプローチを紹介します。

動議 1

点だけを表示してみませんか?すでに動きを視覚化しています。そのためには、ループ\node[dot] at (\x,.5) {};内に空のテキストのノードを配置するだけです。\foreach

モーション2

モーション 1 から開始し、リストの最初のポイントを除いた矢印付きの小さな線だけを描きます。注:

  • ドットの半径を4ptに設定minimum size=4pt,inner sep=0
  • 矢印を見やすくするために少しシフトを導入する\draw[<-,colr,xshift=-2pt] (\x,-.5) -- +(-2pt,0);
  • 両方のパラメータ(ここでは4ptと2pt)のバランスを取り、ポイントの位置も考慮します。

結果

\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{arrows.meta}

\begin{document}
 \begin{tikzpicture}[
    dot/.style={fill=black,circle,minimum size=4pt,inner sep=0},
    >={Stealth},
    colr/.style={red!50},
 ]
    % ~~~ help grid ~~~~~~~~~~~~~~~~~~~~~~~~~~
    \draw[teal!50] (0,-1) grid (9,2);
    
    % ~~~ motion 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    \draw[gray] (0,.5) -- (8.8,.5);
    \foreach \x in {0,1.2,2.4,3.6,4,4.4,4.8,6.8,8.8}    
        \node[dot] at (\x,.5) {};

    
    % ~~~ motion 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    \draw[colr] (0,-.5) -- (8.8,-.5);
    \foreach \x in {0,1.2,2.4,3.6,4,4.4,4.8,6.8,8.8}    
        \node[dot] at (\x,-.5) {};

    \foreach \x in {  1.2,2.4,3.6,4,4.4,4.8,6.8,8.8}
        \draw[<-,colr,xshift=-2pt] (\x,-.5) -- +(-2pt,0);
        
 \end{tikzpicture}
\end{document}

関連情報