為什麼我的軸的刻度會向左移動?

為什麼我的軸的刻度會向左移動?

我正在嘗試制定一個時間表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)。這XYZ當沒有尺寸(長度單位)時使用系統,如 中(2,3)。正如您所看到的,這些因子與xy向量相乘,其值可以指定。這帆布提供尺寸時使用系統,如 中(2 cm, 7 pt)。當你混合系統時(就像你所做的那樣),這些是規則(來自 TikZ 手冊):

注意:可以使用像 之類的座標(1,2cm),它們都不是帆布座標也不是XYZ座標。規則如下:如果座標是隱式形式(⟨x⟩,⟨y⟩),則獨立檢查⟨x⟩⟨y⟩,它們是否有量綱或是否無量綱。如果兩者都有維度,則帆布使用座標系。如果兩者都缺乏維度,則 XYZ使用座標系。如果⟨x⟩有維度而⟨y⟩沒有,則使用兩個座標(⟨x⟩,0pt)和 的和。(0,⟨y⟩)如果 ⟨y⟩有維度而⟨x⟩沒有,則 使用兩個座標(⟨x⟩,0)和 的和。(0pt,⟨y⟩)

另外請注意:表達式 like (2+3cm,0)並不意味著與 相同(2cm+3cm,0)。相反,如果⟨x⟩⟨y⟩在內部使用維度和無量綱值的混合,則所有無量綱值都會透過將它們解釋為 來「升級」為維度pt。所以,2+3cm與 具有相同的維度2pt+3cm

相關內容