Por que os ticks do meu eixo estão deslocados para a esquerda?

Por que os ticks do meu eixo estão deslocados para a esquerda?

Estou tentando fazer uma linha do tempo em um arquivo tikzpicture. No entanto, os ticks da minha linha do tempo estão deslocados para a esquerda. Alguém pode me ajudar a consertar isso?

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

Responder1

Em vez de alterações no vetor unitário, você pode usar escalas que, sem transform shapeopção, não afetam os nós. Você também pode encurtar o código enquanto estiver fazendo isso ...

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

insira a descrição da imagem aqui

Responder2

Você deve ser consistente ao usar cmunidades ou nenhuma unidade. Especifique cada nó como (1 cm,0), etc. (o que resulta em rótulos sobrepostos) ou (como sugere Jubobs) remova as cmunidades no loop foreach. Isso produz:

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

em que tudo se alinha corretamente. O problema é que, como você especificou x=2cmnas opções de ambiente, as coordenadas "básicas" (sem unidades) são múltiplos de x(2cm), ao passo que se você especificar unidades, obterá o que pediu. (Essa incompatibilidade não aparece por padrão, pois inicialmente o vetor x é 1cm.)

Observe que existem dois sistemas de coordenadas diferentes no TikZ especificados por (x,y)pares. OxyzO sistema é usado quando não há dimensões (unidades de comprimento), como em (2,3). Como você viu, estes são fatores que multiplicam os vetores xe y, cujos valores podem ser especificados. OtelaO sistema é usado quando as dimensões são fornecidas, como em (2 cm, 7 pt). Quando você mistura sistemas (como você fez), estas são as regras (do manual TikZ):

Nota: É possível usar coordenadas como (1,2cm), que não são nemtelacoordenadas nemxyzcoordenadas. A regra é a seguinte: Se uma coordenada tem a forma implícita (⟨x⟩,⟨y⟩), então ⟨x⟩e ⟨y⟩são verificados, independentemente, se têm dimensão ou se são adimensionais. Se ambos tiverem uma dimensão, otelasistema de coordenadas é usado. Se ambos não tiverem dimensão, o xyzsistema de coordenadas é usado. Se ⟨x⟩tem uma dimensão e ⟨y⟩não tem, então a soma de duas coordenadas (⟨x⟩,0pt)e (0,⟨y⟩)é usada. Se ⟨y⟩tem uma dimensão e ⟨x⟩não tem, então a soma de duas coordenadas (⟨x⟩,0)e (0pt,⟨y⟩)é usada.

Observe também: uma expressão como (2+3cm,0)não significa o mesmo que (2cm+3cm,0). Em vez disso, se usar ⟨x⟩internamente ⟨y⟩uma mistura de dimensões e valores adimensionais, todos os valores adimensionais serão "atualizados" para dimensões, interpretando-os como pt. Então, 2+3cmé a mesma dimensão que 2pt+3cm.

informação relacionada