TikZ의 목록에서 두 점 사이에 화살표 그리기

TikZ의 목록에서 두 점 사이에 화살표 그리기

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

여기에 두 가지 접근 방식이 있습니다.

모션 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}

관련 정보