我将绘制如下的圆形图:
\begin{center}
\begin{tikzpicture}
\begin{scope}[node distance=2mm]
>=stealth, auto,
every state/.style={draw=none,circle,node distance = 10cm}
]
\node[] (q1) {$1$};
\node[] (q2) [above right=of q1] {$a$};
\node[] (q3) [above right=of q2] {$ab$};
\node[] (q4) [below right=of q3] {$aba$};
\node[] (q5) [below right=of q4] {$(ab)^2$};
\node[] (q8) [below right=of q1] {$b$};
\node[] (q7) [below right=of q8] {$(ab)^3$};
\node[] (q6) [above right=of q7] {$(ab)^2a$};
\end{scope}
\begin{scope}[bend left]%
\path[->] (q1) edge node {} (q2)
(q2) edge node {} (q3)
(q3) edge node {} (q4)
(q4) edge node {} (q5)
(q6) edge node {} (q5)
(q6) edge node {} (q7)
(q7) edge node {}(q8)
(q8) edge node { } (q1);
\end{scope}
\end{tikzpicture}
\end{center}
但结果不对称。我该如何修改它才能得到对称图?
答案1
您可以使用极坐标((<angle>:<radius>)
)将节点放置在圆上,而不是使用相对定位。我在下面的代码中使用了一个循环,这缩短了代码。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}
\foreach [count=\i] \txt in {1,a,ab,aba,(ab)^2,(ab)^2a,(ab)^3,b}
\node (q\i) at (-360/8*\i - 135: 2cm) {$\txt$};
\path[->, bend left=12]
(q1) edge (q2)
(q2) edge (q3)
(q3) edge (q4)
(q4) edge (q5)
(q5) edge (q6)
(q6) edge (q7)
(q7) edge (q8)
(q8) edge (q1);
\end{tikzpicture}
\end{center}
\end{document}