¿Por qué los tics de mi eje están desplazados hacia la izquierda?

¿Por qué los tics de mi eje están desplazados hacia la izquierda?

Estoy intentando hacer una línea de tiempo en un archivo tikzpicture. Sin embargo, los ticks de mi línea de tiempo están desplazados hacia la izquierda. ¿Alguien puede ayudarme a solucionar este problema?

\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}

Respuesta1

En lugar de cambios de vectores unitarios, puede utilizar escalas que, sin transform shapeopción, no afectan a los nodos. También puedes acortar el código mientras lo haces...

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Debes ser coherente con el uso cmde unidades o ninguna unidad. Especifique cada nodo como (1 cm,0), etc. (lo que da como resultado etiquetas superpuestas) o (como sugiere Jubobs) elimine las cmunidades en el bucle foreach. Esto produce:

\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}

en el que todo se alinea correctamente. El problema es que, como especificaste x=2cmen las opciones de entorno, las coordenadas "desnudas" (sin unidades) son múltiplos de x(2 cm), mientras que si especificas unidades, obtienes lo que pides. (Esta discrepancia no aparece de forma predeterminada, ya que inicialmente el vector x mide 1 cm).

Tenga en cuenta que hay dos sistemas de coordenadas diferentes en TikZ especificados por (x,y)pares. ElxyzEl sistema se utiliza cuando no hay dimensiones (unidades de longitud), como en (2,3). Como has visto, se trata de factores que multiplican los vectores xy y, cuyos valores se pueden especificar. EllienzoEl sistema se utiliza cuando se suministran dimensiones, como en (2 cm, 7 pt). Cuando mezclas sistemas (como lo hiciste), estas son las reglas (del manual de TikZ):

Nota: Es posible utilizar coordenadas como (1,2cm), que no son nilienzocoordenadas nixyzcoordenadas. La regla es la siguiente: Si una coordenada es de la forma implícita (⟨x⟩,⟨y⟩), entonces ⟨x⟩y ⟨y⟩se comprueban, independientemente, si tienen dimensión o si son adimensionales. Si ambos tienen una dimensión, ellienzoSe utiliza el sistema de coordenadas. Si a ambos les falta una dimensión, el xyzSe utiliza el sistema de coordenadas. Si ⟨x⟩tiene una dimensión y ⟨y⟩no la tiene, entonces se utiliza la suma de dos coordenadas (⟨x⟩,0pt)y . (0,⟨y⟩)Si ⟨y⟩tiene una dimensión y ⟨x⟩no la tiene, entonces se utiliza la suma de dos coordenadas (⟨x⟩,0)y .(0pt,⟨y⟩)

Tenga en cuenta además: una expresión como (2+3cm,0)no significa lo mismo que (2cm+3cm,0). En cambio, si ⟨x⟩o ⟨y⟩utiliza internamente una combinación de dimensiones y valores adimensionales, entonces todos los valores adimensionales se "actualizan" a dimensiones interpretándolos como pt. Entonces, 2+3cmes la misma dimensión que 2pt+3cm.

información relacionada