我使用以下代码来获取我的图表,
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[->,auto, node distance=3cm,
thick,main node/.style={font=\sffamily\large\bfseries$\bullet$}]
\node[main node] (1) {1};
\node[main node] (2) [below left of=1] {2};
\node[main node] (3) [below of=1] {3};
\node[main node] (4) [below right of=1] {4};
\node[main node] (5) [below of =3] {5};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [right] {$e_2$} (3)
(2) edge node [left] {$e_1$} (1)
(3) edge node [right] {$e_5$} (5)
(4) edge [left] node[right] {$e_3$} (1)
(5) edge node[left] {$e_4$} (2)
edge node[right] {$e_6$} (4);
\end{tikzpicture}
\end{document}
结果如下,
但我想要的是这样的身材,
到这里,节点已经排列整齐了。如何做到呢?
答案1
借助 TikZ 库,positioning
这很容易实现:
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows,quotes,positioning}
\begin{document}
\begin{tikzpicture}[->,auto,
node distance=2cm and 3cm, % changed
thick,
main node/.style={font=\sffamily\large\bfseries$\bullet$},
every edge node/.style={font=\sffamily\small}
]
\node[main node] (1) {1};
\node[main node] (2) [below left=of 1] {2};
\node[main node] (3) [below=of 1] {3};
\node[main node] (4) [below right=of 1] {4};
\node[main node] (5) [below= of 3] {5};
\draw
(1) edge["$e_2$"] (3)
(2) edge["$e_1$"] (1)
(3) edge["$e_5$"] (5)
(4) edge["$e_3$" '] (1)
(5) edge["$e_4$"] (2)
edge["$e_6$" '] (4);
\end{tikzpicture}
\end{document}
定位的主要区别在于 定义node distance=<vertical distance> and <horizontal distance>
,就您的情况而言node distance=2cm and 3cm
。对于您使用的positioning
库,您还需要更改节点放置的语法。例如,正确的语法是below left=of 1
(请参阅 的不同位置=
!)。
我也擅自改变了路径标记方式。有了quotes
库就更短了。
当然,你可以在automata
库的帮助下以不同的、可能更有效的方式绘制此图,作为自动机。有关说明,请参阅41 自动机绘图库,TikZ 手册(版本 3.0.1a)第 513 页