为什么我的轴的刻度向左偏移了?

为什么我的轴的刻度向左偏移了?

我正在尝试在 中创建时间轴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 所建议的)删除cmforeach 循环中的单位。这会产生:

\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 中有两个不同的坐标系,以(x,y)对的形式指定。坐标在没有维度(长度单位)的情况下使用系统,例如(2,3)。如您所见,这些是乘以xy向量的因子,其值可以指定。帆布当提供尺寸时使用系统,如(2 cm, 7 pt)。当您混合系统时(如您所做的那样),这些是规则(来自 TikZ 手册):

注意:可以使用像 这样的坐标(1,2cm),它们都不是帆布坐标也不坐标坐标。规则如下:如果坐标为隐式形式(⟨x⟩,⟨y⟩),则⟨x⟩分别⟨y⟩检查和是否有维度或是否无维度。如果两者都有维度,则帆布坐标系。如果两者都缺少维度,则 坐标使用坐标系。如果⟨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

相关内容