내 축의 눈금이 왼쪽으로 옮겨진 이유는 무엇입니까?

내 축의 눈금이 왼쪽으로 옮겨진 이유는 무엇입니까?

타임라인을 만들려고 합니다 tikzpicture. 그런데 타임라인의 눈금이 왼쪽으로 옮겨졌습니다. 누군가 이 문제를 해결하도록 도와줄 수 있나요?

\begin{tikzpicture}[x=2cm,y=2ex]

%draw horizontal line   
\draw (1,0) -- (6,0);

%draw vertical line
\foreach \x in {1,2,3,4,5,6}
   \draw (\x cm, 3pt) -- (\x cm,-3pt);

%draw nodes
\draw (1,0) node[below=3pt] {$ 1 $} node[above=14pt] {RD};
\draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {Defendant enters market};
\draw (3,0) node[below=3pt] {$ 3 $} node[above=14pt] {Lawsuit};
\draw (4,0) node[below=3pt] {$ 4 $} node[above=3pt] {PI Decision};
\draw (5,0) node[below=3pt] {$ 5 $} node[above=14pt] {Final Decision};
\draw (6,0) node[below=3pt] {$ 6 $} node[above=3pt] {Final Pay-offs};
\end{tikzpicture}

답변1

단위 벡터 변경 대신 transform shape옵션 없이 노드에 영향을 주지 않는 스케일을 사용할 수 있습니다. 코드를 단축하는 동안에도 코드를 단축할 수 있습니다.

\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}[xscale=2]
\def\mylist{{"RD","Defendant enters market","Lawsuit",
             "PI Decision","Final Decision","Final Pay-offs"}}

\draw (1,0) -- (6,0);

\foreach \x[count=\xi from 0] in {1,...,6}{
   \draw (\x cm, 3pt) -- (\x cm,-3pt)   node[below=3pt] at (\x,0) {$\x$}
   \pgfextra{\pgfmathparse{Mod(\x,2)==0?"3pt":"14pt"}}
   node [above=\pgfmathresult] {\pgfmathparse{\mylist[\xi]}\pgfmathresult};
}
\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

답변2

단위를 사용하거나 단위를 사용하지 않는 것과 일관성을 유지해야 합니다 cm. 각 노드를 (1 cm,0)등으로 지정하거나(레이블이 겹치게 됨) Jubobs가 제안한 대로 cmforeach 루프에서 단위를 제거합니다. 결과는 다음과 같습니다.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=2cm,y=2ex]

%draw horizontal line   
\draw (1,0) -- (6,0);

%draw vertical line
\foreach \x in {1,2,3,4,5,6}
   \draw (\x, 3pt) -- (\x,-3pt);

%draw nodes
\draw (1,0) node[below=3pt] {$ 1 $} node[above=14pt] {RD};
\draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {Defendant enters market};
\draw (3,0) node[below=3pt] {$ 3 $} node[above=14pt] {Lawsuit};
\draw (4,0) node[below=3pt] {$ 4 $} node[above=3pt] {PI Decision};
\draw (5,0) node[below=3pt] {$ 5 $} node[above=14pt] {Final Decision};
\draw (6,0) node[below=3pt] {$ 6 $} node[above=3pt] {Final Pay-offs};
\end{tikzpicture}
\end{document}

모든 것이 올바르게 정렬됩니다. 문제는 x=2cm환경 옵션을 지정했기 때문에 "기본" 좌표(단위 없음)가 x(2cm)의 배수인 반면, 단위를 지정하면 원하는 결과를 얻을 수 있다는 것입니다. (처음에 x-벡터가 1cm이므로 이 불일치는 기본적으로 표시되지 않습니다.)

TikZ에는 쌍으로 지정된 두 개의 서로 다른 좌표계가 있습니다 (x,y). 그만큼xyz와 같이 치수(길이 단위)가 없을 때 시스템을 사용합니다 (2,3). 보시다시피, 이는 값을 지정할 수 있는 x과 벡터를 곱하는 요소입니다. y그만큼캔버스시스템은 에서와 같이 차원이 제공될 때 사용됩니다 (2 cm, 7 pt). (당신이 그랬던 것처럼) 시스템을 혼합할 때 규칙은 다음과 같습니다(TikZ 매뉴얼 참조):

참고: 와 같은 좌표를 사용할 수 있습니다 (1,2cm).캔버스좌표도 아니고xyz좌표. 규칙은 다음과 같습니다. 좌표가 암시적 형식인 경우 (⟨x⟩,⟨y⟩)⟨x⟩⟨y⟩차원이 있는지 또는 무차원인지 여부를 독립적으로 확인합니다. 둘 다 차원을 갖고 있는 경우캔버스좌표계가 사용됩니다. 둘 다 차원이 부족한 경우 xyz좌표계가 사용됩니다. ⟨x⟩차원이 있고 차원 ⟨y⟩이 없으면 두 좌표의 합이 사용 (⟨x⟩,0pt)됩니다 (0,⟨y⟩). ⟨y⟩차원이 있고 차원 ⟨x⟩이 없으면 두 좌표의 합이 사용 (⟨x⟩,0)됩니다 (0pt,⟨y⟩).

추가 참고 사항: like라는 표현 (2+3cm,0)은 와 같다는 의미가 아닙니다 (2cm+3cm,0). 대신 ⟨x⟩또는 ⟨y⟩내부적으로 차원과 차원 없는 값의 혼합을 사용하는 경우 모든 차원 없는 값은 로 해석되어 차원으로 "업그레이드"됩니다 pt. 따라서 는 2+3cm와 같은 차원입니다 2pt+3cm.

관련 정보