Platzieren von Text entlang eines Pfads

Platzieren von Text entlang eines Pfads

Ich verwende die Dekorationsbibliothek, um Text entlang eines Pfads zu platzieren. Aber der Text erscheint nicht auf dem Pfad, sondern im Knoten. Wie kann ich das korrigieren? Außerdem ist der gepunktete Pfad nicht symmetrisch. Gibt es eine Möglichkeit, ihn sauber und symmetrisch aussehen zu lassen? Wie erstelle ich durchgezogene Linien gleicher Länge?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{calc,shapes.multipart,chains}
\begin{document}
\tikzstyle{block} = [rectangle, draw, fill=blue!20, 
text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex'] 
\tikzstyle{cloud} = [draw, ellipse,fill=red!20, node distance=3cm,
minimum height=2em]

\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block] (init) {model};
\node [cloud, left of=init] (expert) {$\mathbf{\Lambda}$ };
\node [cloud, right of=init] (system) {Predict};

\path [line,dashed] ([yshift=3ex]{init}) to[out=-90,in=-90,looseness=2.2]  ([yshift=-.5ex]{expert}) node [midway, above, sloped] (TextNode) {path text};

\path [line] (init) -- (system);
\path [line] (expert) -- (init);
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort1

Mehrere Änderungen.

  • Sie sollten \tikzsetanstelle von verwenden \tikzstyle. Die Syntax finden Sie im folgenden Code.
  • Wird verwendet anchor=, um den Abstand vom Rand des Knotens statt von der Mitte zu messen.
  • Nutzen Sie die decorations.textBibliothek.
  • Um einen symmetrischen Textpfad zu erhalten, zeichnen Sie ihn auf die gleiche Höhe wie die Unterseite des Rechtecks ​​und verlängern Sie ihn dann bis zum Kreis.

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning, shapes.geometric, arrows, decorations.text}
\tikzset{block/.style={rectangle, draw, fill=blue!20, text width=5em, 
        text centered, rounded corners, minimum height=4em},
    cloud/.style={draw, ellipse,fill=red!20, node distance=3cm, minimum height=2em},
    line/.style={draw, -latex'}
    }

\begin{document}

\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block] (init) {model};
\node [cloud, left of=init, anchor=east] (expert) {$\mathbf{\Lambda}$ };
\node [cloud, right of=init, anchor=west] (system) {Predict};

\path [line] (init) -- (system);
\path [line] (expert) -- (init);
\draw [line, dashed] 
    [postaction={decoration={text along path, reverse path, text align=center, text={path text}}, decorate}]
     (init) to[out=-90, in=-90, looseness=2.2] ([yshift=-2em]expert) to (expert);
\end{tikzpicture}

\end{document}

Antwort2

Es ist nicht ganz klar, wonach Sie suchen. Ich vermute, dass es so etwas wie das hier ist:

Bildbeschreibung hier eingeben

d. h. der Text befindet sich auf dem ersten geraden durchgezogenen Pfeil und nicht auf der gestrichelten Kurve.

\documentclass[margin=3mm]{standalone}%{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                calc, chains,
                positioning,
                quotes,
                shapes, shapes.multipart}
\begin{document}
    \begin{tikzpicture}[auto,
node distance = 22mm, 
  start chain = going right,
   arr/.style = {-Stealth},
  base/.style = {draw, semithick, minimum size=2.2em, font=\sffamily}, 
 block/.style = {base, text width=5em, align=center, rounded corners, fill=blue!20}, 
 cloud/.style = {base, ellipse, fill=red!20}
                    ]
    \begin{scope}[nodes={on chain, join=by arr}]
\node [cloud] (expert)  {$\mathbf{\Lambda}$};
\node [block] (init)    {model};
\node [cloud] (system)  {Predict};
    \end{scope}
\path   (expert) to ["path text"]    (init);
\draw[arr, dashed] (init) to [out=240, in=300] (expert); 
    \end{tikzpicture}
\end{document}

Für Beschriftungen über dem Pfeil wird \quotesdie Bibliothek verwendet, für gestrichelte Linien die Option für Kanten bend left=60. Verwendet wird chainsdie Bibliothek, die in die Dokumentpräambel geladen wird. Knotenstile werden als Optionen in definiert tikzpicture. Dadurch werden veraltete \tikzstyleDefinitionen entfernt, die in Ihrem MWE verwendet werden.

verwandte Informationen