軸の目盛りが左にずれているのはなぜですか?

軸の目盛りが左にずれているのはなぜですか?

でタイムラインを作成しようとしています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 の提案どおり) foreach ループ内の単位を削除しますcm。これにより、次のようになります。

\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には2つの異なる座標系があり、(x,y)XYZシステムは、のように次元(長さの単位)がない場合に使用されます(2,3)。ご覧のとおり、これらはとを掛け合わせる係数ですxyベクトルを掛け合わせる係数であり、その値は指定できます。キャンバスシステムは、 のように次元が指定されている場合に使用されます(2 cm, 7 pt)。システムを混在させる場合 (行ったように)、次の規則が適用されます (TikZ マニュアルより)。

注: 次のような座標を使用することもできます。(1,2cm)、これはキャンバス座標もXYZ座標。規則は次の通りです。座標が暗黙の形式である場合(⟨x⟩,⟨y⟩)⟨x⟩そして⟨y⟩独立に次元を持つか無次元かがチェックされます。両方が次元を持つ場合、キャンバス座標系が使用されます。両方に次元がない場合、 XYZ座標系が使用されます。 が⟨x⟩次元を持ち、⟨y⟩がない場合は、 と 2 つの座標の合計(⟨x⟩,0pt)(0,⟨y⟩)使用されます。 ⟨y⟩が次元を持ち、⟨x⟩がない場合は、 と 2 つの座標の合計 (⟨x⟩,0)(0pt,⟨y⟩)使用されます。

さらに注意: のような式は (2+3cm,0)と同じ意味ではありません(2cm+3cm,0)。 または⟨x⟩⟨y⟩内部的に次元と無次元値を混在させて使用する場合、すべての無次元値は と解釈されて次元に「アップグレード」されますpt。 したがって、2+3cmは と同じ次元です2pt+3cm

関連情報