BEARBEITEN

BEARBEITEN

Ich habe sechs Zustände in einer Automatenzeichnung:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata}

\begin{document}
\begin{tikzpicture}[node distance=5cm,thick,every state/.style={minimum size=3cm}]
  \node[state,draw=blue,fill=blue!20] (A) {A};
  \node[state,draw=red,fill=red!20] (B) [right of=A] {B};
  \node[state,draw=red,fill=red!20] (E) [below of=B] {E};
  \node[state,draw=blue,fill=blue!20] (C) [right of=B] {C};
  \node[state,draw=green!50!black,fill=green!20] (D) [below of=A] {D};
  \node[state,draw=red,fill=red!20] (F) [below of=C] {F};
  \path[-,violet,line width=1mm]
  (A) edge node [color=black,sloped,above] {G1,G2,G3} (E)
  edge node [color=black,sloped,above] {G1} (B)
  (D) edge node [color=black,sloped,above] {G4} (E)
  (C) edge node [color=black,sloped,above] {G5} (E)
  edge node [color=black,sloped,above] {G5} (F)
  (E) edge node [color=black,sloped,above] {G5} (F)
  (B) edge node [color=black,sloped,above] {G1} (E);
\end{tikzpicture}
\end{document}

was dies erzeugt

Bildbeschreibung hier eingeben

Was ich jetzt möchte, ist, einen großen Pfeil zu zeichnen, der alle Knoten mit einem Text darauf berührt.

Dieses Beispiel ist erstaunlichaber ich habe keine Ahnung, wie ich es ändern kann, damit es durch die Knoten geht.

Ich möchte so etwas:

Bildbeschreibung hier eingeben

Sieht aber besser aus (und mit TiKZ, das vorherige Bild wurde in Inkscape erstellt)

Antwort1

Dies zeigt eine Möglichkeit, einen Pfad mit entlang des Pfads gekrümmtem Text zu überlagern. Ein breiter Pfad wird mit einer dicken, durchscheinenden Linie gezeichnet. text along pathNachdem die Linie gezeichnet wurde, wird eine Verzierung verwendet, um den Text hinzuzufügen postaction. Schließlich erhält der Pfad undurchsichtige Kanten, indem zwei weitere Pfade mit dünnen Kantenlinien über den ersten gezeichnet werden.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{automata,calc,positioning,decorations.text}

\begin{document}
  \begin{tikzpicture}
    [
      node distance=5cm,
      thick,
      every state/.style={minimum size=3cm},
      every edge/.append style={
        every node/.append style={text=black, sloped, above}
      },
    ]
    \node[state,draw=blue,fill=blue!20] (A) {A};
    \node[state,draw=red,fill=red!20] (B) [right=of A.center] {B};
    \node[state,draw=red,fill=red!20] (E) [below=of B.center] {E};
    \node[state,draw=blue,fill=blue!20] (C) [right=of B.center] {C};
    \node[state,draw=green!50!black,fill=green!20] (D) [below=of A.center] {D};
    \node[state,draw=red,fill=red!20] (F) [below=of C.center] {F};
    \path[-,violet,line width=1mm]
    (A)  edge node  {G1,G2,G3}
    (E)  edge node [below]  {G1} (B)
    (D)  edge node  {G4} (E)
    (C)  edge node  {G5} (E)
         edge node  {G5} (F)
    (E)  edge node  {G5} (F)
    (B)  edge node  {G1} (E);
    \path
    [
      line width=7.5mm,
      draw=violet!25,
      opacity=.75,
    ] ($(B.north)!1/2!(E.south)$) coordinate (c) circle (75mm and 40mm);
    \path
    [
      thick,
      draw=violet,
    ] (c) circle (78.75mm and 43.75mm) circle (71.25mm and 36.25mm)
    ;
    \path
    [
      postaction={
        decorate,
        opacity=1,
        decoration={
          text along path,
          text={|\LARGE\sffamily|Some text here Some text here ||},
          raise=-5pt,
          pre length=200mm,
          text color=black,
          reverse path=true,
          pre=moveto
        }
      }
    ]  (c) circle (75mm and 40mm);
  \end{tikzpicture}
\end{document}

gebogener Text

BEARBEITEN

Hier ist ein Beispiel, das dem in Ihrer Frage verlinkten Beispiel etwas ähnelt. Es verwendet dicke Pfeile mit Textverzierungen.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{automata,calc,positioning,decorations.text,arrows.meta,bending}

\begin{document}
  \begin{tikzpicture}
    [
      node distance=5cm,
      thick,
      every state/.style={minimum size=3cm},
      every edge/.append style={
        every node/.append style={text=black, sloped, above}
      },
      my arrow/.style={line width=7.5mm, draw=violet, {Triangle Cap[reversed,bend]}-{Triangle Cap[bend]}},
    ]
    \node[state,draw=blue,fill=blue!20] (A) {A};
    \node[state,draw=red,fill=red!20] (B) [right=of A.center] {B};
    \node[state,draw=red,fill=red!20] (E) [below=of B.center] {E};
    \node[state,draw=blue,fill=blue!20] (C) [right=of B.center] {C};
    \node[state,draw=green!50!black,fill=green!20] (D) [below=of A.center] {D};
    \node[state,draw=red,fill=red!20] (F) [below=of C.center] {F};
    \path[-,violet,line width=1mm]
    (A)  edge node  {G1,G2,G3}
    (E)  edge node [below]  {G1} (B)
    (D)  edge node  {G4} (E)
    (C)  edge node  {G5} (E)
         edge node  {G5} (F)
    (E)  edge node  {G5} (F)
    (B)  edge node  {G1} (E);
    \path [my arrow]  ($(B.north)!1/2!(E.south)$) coordinate (c) +(75mm,0) arc (0:-90:75mm and 40mm);
    \path [my arrow] (c) +(0,-40mm) arc (270:180:75mm and 40mm);
    \path
    [
      my arrow,
      postaction=decorate,
      decoration={
        text along path,
        text={|\LARGE\sffamily|Some text here Some text here ||},
        text color=white,
        raise=-5pt,
        pre length=10mm,
        pre=moveto
        }
    ] (c) +(-75mm,0) arc (180:90:75mm and 40mm);
    \path
    [
      my arrow,
      postaction=decorate,
      decoration={
        text along path,
        text={|\LARGE\sffamily|More text here More text here ||},
        text color=white,
        raise=-5pt,
        pre length=10mm,
        pre=moveto
        }
    ]  (c) +(0,40mm) arc (90:0:75mm and 40mm);
  \end{tikzpicture}
\end{document}

Pfeile auf Automaten

verwandte Informationen