对称图

对称图

我将绘制如下的圆形图:

\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}

相关内容