Ich versuche, eine Zeitleiste in einem zu erstellen tikzpicture
. Allerdings sind die Markierungen meiner Zeitleiste nach links verschoben. Kann mir bitte jemand helfen, das zu beheben?
\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}
Antwort1
Anstelle von Einheitsvektoränderungen können Sie Skalen verwenden, die ohne transform shape
Option die Knoten nicht beeinflussen. Sie können den Code auch gleich verkürzen ...
\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}
Antwort2
Sie müssen konsequent sein, wenn Sie cm
Einheiten verwenden oder keine Einheiten verwenden. Geben Sie entweder jeden Knoten als (1 cm,0)
usw. an (was zu überlappenden Beschriftungen führt) oder entfernen Sie (wie Jubobs vorschlägt) die cm
Einheiten in der foreach-Schleife. Dies ergibt:
\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}
in dem alles richtig ausgerichtet ist. Das Problem ist, dass, da Sie x=2cm
in den Umgebungsoptionen angegeben haben, „nackte“ Koordinaten (ohne Einheiten) Vielfache von x
(2 cm) sind, während Sie, wenn Sie Einheiten angeben, das Gewünschte erhalten. (Diese Nichtübereinstimmung wird standardmäßig nicht angezeigt, da der x-Vektor anfangs 1 cm beträgt.)
Beachten Sie, dass es in TikZ zwei verschiedene Koordinatensysteme gibt, die paarweise angegeben werden (x,y)
.xyzDas System wird verwendet, wenn keine Dimensionen (Längeneinheiten) vorhanden sind, wie in (2,3)
. Wie Sie gesehen haben, handelt es sich dabei um Faktoren, die die x
und y
Vektoren multiplizieren, deren Werte angegeben werden können. DasLeinwandDas System wird verwendet, wenn Abmessungen angegeben werden, wie in (2 cm, 7 pt)
. Wenn Sie Systeme mischen (wie Sie es getan haben), gelten die folgenden Regeln (aus dem TikZ-Handbuch):
Hinweis: Es ist möglich, Koordinaten wie zu verwenden
(1,2cm)
, die wederLeinwandKoordinaten nochxyzKoordinaten. Die Regel lautet: Wenn eine Koordinate von der impliziten Form ist(⟨x⟩,⟨y⟩)
, dann werden⟨x⟩
und⟨y⟩
unabhängig voneinander geprüft, ob sie eine Dimension haben oder dimensionslos sind. Wenn beide eine Dimension haben, dannLeinwandKoordinatensystem verwendet. Fehlt in beiden eine Dimension, xyzKoordinatensystem wird verwendet. Wenn⟨x⟩
eine Dimension hat und⟨y⟩
nicht hat, dann wird die Summe der beiden Koordinaten(⟨x⟩,0pt)
und(0,⟨y⟩)
verwendet. Wenn⟨y⟩
eine Dimension hat und⟨x⟩
nicht hat, dann wird die Summe der beiden Koordinaten(⟨x⟩,0)
und(0pt,⟨y⟩)
verwendet.Beachten Sie außerdem: Ein Ausdruck wie
(2+3cm,0)
bedeutet nicht dasselbe wie(2cm+3cm,0)
. Wenn stattdessen⟨x⟩
oder⟨y⟩
intern eine Mischung aus Dimensionen und dimensionslosen Werten verwendet, werden alle dimensionslosen Werte zu Dimensionen „aufgewertet“, indem sie als interpretiert werdenpt
. Daher2+3cm
ist die gleiche Dimension wie2pt+3cm
.