Почему деления моей оси смещены влево?

Почему деления моей оси смещены влево?

Я пытаюсь сделать временную шкалу в 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) удалите cmединицы в цикле foreach. Это дает:

\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(2 см), тогда как если вы укажете единицы, вы получите то, что запрашиваете. (Это несоответствие не отображается по умолчанию, поскольку изначально x-вектор равен 1 см.)

Обратите внимание, что в TikZ есть две разные системы координат, заданные (x,y)парами.хyzсистема используется, когда нет измерений (единиц длины), как в (2,3). Как вы видели, это факторы, которые умножают xи yвекторы, значения которых могут быть указаны.холстсистема используется, когда указаны размеры, как в (2 cm, 7 pt). Когда вы смешиваете системы (как вы это сделали), действуют следующие правила (из руководства TikZ):

Примечание: можно использовать координаты типа (1,2cm), которые не являются нихолсткоординаты нихyzкоординаты. Правило следующее: если координата имеет неявную форму (⟨x⟩,⟨y⟩), то ⟨x⟩и ⟨y⟩проверяются независимо, имеют ли они размерность или являются безразмерными. Если обе имеют размерность, тохолстИспользуется система координат. Если обе не имеют размерности, то хyzИспользуется система координат. Если ⟨x⟩имеет размерность и ⟨y⟩не имеет, то используется сумма двух координат (⟨x⟩,0pt)и . Если имеет размерность и не имеет, то используется сумма двух координат и .(0,⟨y⟩)⟨y⟩⟨x⟩(⟨x⟩,0)(0pt,⟨y⟩)

Обратите внимание еще раз: выражение типа (2+3cm,0)не означает то же самое, что и (2cm+3cm,0). Вместо этого, если ⟨x⟩или ⟨y⟩внутренне использует смесь измерений и безразмерных значений, то все безразмерные значения «повышаются» до измерений путем интерпретации их как pt. Таким образом, 2+3cmявляется тем же измерением, что и 2pt+3cm.

Связанный контент