TikZ 新手:如何用 TikZ 绘制这个图形?

TikZ 新手:如何用 TikZ 绘制这个图形?

我想用 TikZ 绘制这样的图形:

在此处输入图片描述

我对 TikZ 还很陌生,因此如果有人能为我提供上面图片的一个好看的建议,我将非常感激,因为我现在一个人做这件事时完全迷失了方向。

我想创建更多像上面这样的图片,因为它们看起来都非常相似,所以我想有一个合适的第一个例子确实可以帮助我独自完成其他图片。

答案1

在此处输入图片描述

我让你写正确的节点内容和箭头标签:

\documentclass[margin=3.1415926mm]{standalone}
\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}[bend angle = 15]
    & A \ar[rr,bend left,"f"]
        &   & B \ar[rd,bend left, dashed,"f"]
                &       \\
C \ar[ru,bend left,"f"]
    &   &   &   &  D \ar[ld,bend left, dashed,"f"]
                        \\
    & E \ar[lu,bend left,"f"]
        &   & F \ar[ll,bend left,"f"]
                &       \\
\end{tikzcd}
\end{document}

附录: 我不会在你的图表中使用项目符号。但是,如果你坚持要使用它们,那么使用tikz-cd包的粗鲁解决方案可以是:

\documentclass[margin=3.1415926]{standalone}
\usepackage{tikz-cd}
\newcommand\Dot[1]{\bullet\atop #1}

    \begin{document}
\begin{tikzcd}[bend angle = 15,
               center yshift=2ex
                ]
& \Dot{f(x_0)} \ar[rr,bend left,"f"]
    &   & \Dot{B} \ar[rd,bend left, dashed,"f"]
                &       \\
\Dot{C} \ar[ru,bend left,"f"]
    &   &   &   &  \Dot{D} \ar[ld,bend left, dashed,"f"]
                        \\
    & \Dot{E} \ar[lu,bend left,"f"]
        &   & \Dot{F} \ar[ll,bend left,"f"]
                &       \\
\end{tikzcd}
\end{document}

这使:

在此处输入图片描述

使用纯 TikZ 可以获得更好的结果:

\documentclass[tikz, margin=3.1415926mm]{standalone}
\usetikzlibrary{arrows.meta,
                positioning,
                quotes}

    \begin{document}
    \begin{tikzpicture}[
node distance = 10mm and 16mm,
   dot/.style = {circle, fill, inner sep=1pt, outer sep=1pt,
                 label={[font=\footnotesize]#1}, node contents={}},
   every edge/.style = {draw, -Stealth, bend left = 15},
every edge quotes/.style = {font=\footnotesize, inner sep=1pt, auto}
                ]
\node (n0) [dot=left:{$x_0=f^n(x_0)$}];
\node (n1) [dot=above:$f(x_0)$,above right=of n0];
\node (n2) [dot=above:$f^2(x_0)$,right=of n1];
\node (n3) [dot=right:$f^k(x_0)$,below right=of n2];
\node (n4) [dot=below:$f^2(x_0)$,below  left=of n3];
\node (n5) [dot=below:$f(x_0)$, left=of n4];
%
\draw   (n0) edge ["$f$"]   (n1)
    (n1) edge ["$f$"]   (n2)
    (n2) edge ["$f$", densely dashed]   (n3)
    (n3) edge ["$f$", densely dashed]   (n4)
    (n4) edge ["$f$"]   (n5)
    (n5) edge ["$f$"]   (n0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这提供了一个纯 TikZ 解决方案,与 Zarko 的答案相比,它稍长一些,但“词汇量”较少,因此 TikZ 初学者可能会觉得它更容易。

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[>=stealth,
n/.style={circle,fill=magenta,inner sep=1.5pt,outer sep=1.5pt},
legend/.style={midway,blue,scale=.8}]
\def\a{1.2}
\def\b{1.5}
\path
(-3*\a,0) node[n] (L) {} node[left] {$f^n(x_0)=x_0$}
(-\a,\b)  node[n] (A) {} node[above]{$f(x_0)$}
(\a,\b)   node[n] (B) {} node[above]{$f^2(x_0)$}
(3*\a,0)  node[n] (R) {} node[right]{$f^k(x_0)$}
(\a,-\b)  node[n] (C) {} node[below]{$f^{k+1}(x_0)$}
(-\a,-\b) node[n] (D) {} node[below]{$f^{n-1}(x_0)$};

\draw[->] (L) to[bend left=15] node[legend,below]{$f$} (A);
\draw[->] (A) to[bend left=8]  node[legend,below]{$f$} (B);
\draw[->] (C) to[bend left=8]  node[legend,above]{$f$} (D);
\draw[->] (D) to[bend left=15] node[legend,above]{$f$} (L);
\draw[->,densely dashed] (B) to[bend left=15] node[legend,below]{$f$} (R);
\draw[->,densely dashed] (R) to[bend left=15] node[legend,above]{$f$} (C);
\end{tikzpicture}
\end{document}

相关内容