Anzeigen von Gewichten im Tikz-Diagramm mithilfe von „Kante zeichnen“-Befehlen

Anzeigen von Gewichten im Tikz-Diagramm mithilfe von „Kante zeichnen“-Befehlen

Ich möchte einige Zahlen als Gewichte der Kanten meines Tikz-Diagramms anzeigen. Mein Diagramm ohne Gewichte sieht wie folgt aus:

\begin{figure}[!ht]
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick]
    \tikzstyle{node_style} = [circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries]
    \tikzstyle{edge_style} = [draw=black, line width=2, ultra thick]
    \node[node_style] (v1) at (-2,2) {2};
    \node[node_style] (v2) at (2,2) {3};
    \node[node_style] (v3) at (4,0) {6};
    \node[node_style] (v4) at (2,-2) {4};
    \node[node_style] (v5) at (-2,-2) {5};
    \node[node_style] (v6) at (-4,0) {1};
    \draw[edge_style]  (v1) edge (v2);
    \draw[edge_style]  (v2) edge (v3);
    \draw[edge_style]  (v3) edge (v4);
    \draw[edge_style]  (v4) edge (v5);
    \draw[edge_style]  (v5) edge (v6);
    \draw[edge_style]  (v6) edge (v1);
    \draw[edge_style]  (v5) edge (v1);
    \draw[edge_style]  (v5) edge (v2);
    \draw[edge_style]  (v4) edge (v2);
    \end{tikzpicture}
\end{figure}

Ich habe versucht, im Internet nach etwas zu suchen, konnte jedoch nichts finden, um Gewichte mit dem \drawEdge-Befehl anzuzeigen. Dies ist der Befehl, den ich in meinem Diagramm verwende.

Können Sie mir Vorschläge zur Lösung meines Problems machen?

Antwort1

Um eine Beschriftung neben einer Kante hinzuzufügen, verwenden Sie die Syntax edge node {some text}. Siehe beispielsweise das zweite Tutorial im TikZ-Handbuch, Abschnitt 3.11Hinzufügen von Text neben Zeilen.

Wenn Sie den Knoten auf der anderen Seite der Linie platzieren möchten, verwenden Sie edge node[swap] {some text}.

Beachten Sie auch, dass \tikzstylees als veraltet gilt. Sie sollten \tikzsetdie Stile tikzpicturewie unten beschrieben verwenden oder zu den Optionen hinzufügen. SieheSollten \tikzset oder \tikzstyle zum Definieren von TikZ-Stilen verwendet werden?

Nachfolgend finden Sie drei verschiedene Möglichkeiten zum Erstellen desselben Diagramms. Eine davon wurde von Alain in den Kommentaren vorgeschlagen.

Bildbeschreibung hier eingeben

\documentclass[tikz]{standalone}
\begin{document}

% first method
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick,
   node_style/.style={circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries},
   edge_style/.style={draw=black, ultra thick}]

    \node[node_style] (v1) at (-2,2) {2};
    \node[node_style] (v2) at (2,2) {3};
    \node[node_style] (v3) at (4,0) {6};
    \node[node_style] (v4) at (2,-2) {4};
    \node[node_style] (v5) at (-2,-2) {5};
    \node[node_style] (v6) at (-4,0) {1};
    \draw[edge_style]  (v1) edge node{1} (v2);
    \draw[edge_style]  (v2) edge node{2} (v3);
    \draw[edge_style]  (v3) edge node{3} (v4);
    \draw[edge_style]  (v4) edge node{4} (v5);
    \draw[edge_style]  (v5) edge node{5} (v6);
    \draw[edge_style]  (v6) edge node{6} (v1);
    \draw[edge_style]  (v5) edge node{7} (v1);
    \draw[edge_style]  (v5) edge node{8} (v2);
    \draw[edge_style]  (v4) edge node{9} (v2);
    \end{tikzpicture}

% Second method
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick]
   \begin{scope}[every node/.style={circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries}]
    \node (v1) at (-2,2) {2};
    \node (v2) at (2,2) {3};
    \node (v3) at (4,0) {6};
    \node (v4) at (2,-2) {4};
    \node (v5) at (-2,-2) {5};
    \node (v6) at (-4,0) {1};
   \end{scope}
   \begin{scope}[every edge/.style={draw=black,ultra thick}]
    \draw  (v1) edge node{1} (v2);
    \draw  (v2) edge node{2} (v3);
    \draw  (v3) edge node{3} (v4);
    \draw  (v4) edge node{4} (v5);
    \draw  (v5) edge node{5} (v6);
    \draw  (v6) edge node{6} (v1);
    \draw  (v5) edge node{7} (v1);
    \draw  (v5) edge node{8} (v2);
    \draw  (v4) edge node{9} (v2);
   \end{scope}
\end{tikzpicture}

% Third method    
\begin{tikzpicture}[shorten >=1pt, auto, node distance=3cm, ultra thick,
   edge_style/.style={draw=black, ultra thick}]

   \foreach [count=\i] \x/\y/\t in {-2/2/2, 2/2/3, 4/0/6, 2/-2/4, -2/-2/5, -4/0/1}
     \node [circle,draw=blue,fill=blue!20!,font=\sffamily\Large\bfseries]
        (v\i) at (\x,\y) {\t};

   \foreach \i/\j/\t in {1/2/1, 2/3/2, 3/4/3, 4/5/4, 5/6/5, 6/1/6, 5/1/7, 5/2/8, 4/2/9}
    \draw [edge_style]  (v\i) edge node{\t} (v\j);
\end{tikzpicture}
\end{document}

verwandte Informationen