Graph in tikz: Kantenorthogonale Beschriftungspositionierung

Graph in tikz: Kantenorthogonale Beschriftungspositionierung

Ich verwende Tikz zum Zeichnen von Graphen. Jede Kante soll eine Kantenbeschriftung haben. Diese Kantenbeschriftung sollte neben derCenterder Kante.

Ich habe edge nodean jeder Kante ein eingefügt. Es sollte ein kleinersenkrechtAbstand vom Etikett zur Mitte der Kante. Gehen Sie also ausgehend von der Mitte der Kante eine bestimmte Distanz entlang der orthogonalen Richtung der Kante und platzieren Sie das Etikett dort.

Bis jetzt habe ich das bekommen, was aber nicht richtig funktioniert.

\documentclass[12pt,a4paper,oneside,listof=totoc,bibliography=totoc,BCOR=4mm,DIV=12,]{scrartcl}

  \usepackage{tikz}
  \usepackage{pgfplots}

\begin{document}

  \begin{tikzpicture} [scale=0.75]  
    \begin{scope}[every node/.style={circle,draw,fill=white}]
      \node (5) at (0.5,4.5) {1};
      \node (6) at (3.5,4.5) {3};
      \node (7) at (1.5,6) {3};
      \node (8) at (4.5,6) {1};
    \end{scope}      
    \begin{scope}[>=latex,
                    every node/.style={midway},
                   every edge/.style={draw=black,thick}]
      \path [-] (5) edge[right] node {\footnotesize $1$} (6);
      \path [-] (6) edge[right] node {\footnotesize $1$} (7);
      \path [-] (6) edge[right] node {\footnotesize $1$} (8);
  \end{scope}
 \end{tikzpicture}

\end{document}

Antwort1

Wie wäre es, die quotesBibliothek anstelle von zu verwenden edge nodes? Dann können Sie den Randknoten innerhalb des Rands selbst durch angeben edge["1"]. Die Position des Randknotens wird dann durch den Schlüssel gesteuert, der oder autoannehmen kann .leftright

Die Bedeutung von leftund rightfür den autoSchlüssel besteht darin, dass der Knoten unter Berücksichtigung seiner Richtung links vom Pfad platziert wird (wenn der Pfad beispielsweise von links nach rechts auto=leftverläuft, wird der Knoten in der Mitte und darüber auf dem Pfad platziert).(0,0)(1,0)

MWE

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{quotes}

\begin{document}
  \begin{tikzpicture} [scale=0.75]  
    \begin{scope}[every node/.style={circle,draw,fill=white}]
      \node (5) at (0.5,4.5) {1};
      \node (6) at (3.5,4.5) {3};
      \node (7) at (1.5,6) {3};
      \node (8) at (4.5,6) {1};
    \end{scope}      
    \begin{scope}[
        >=latex,
        every node/.style={font=\footnotesize},
        every edge/.style={auto=right, draw=black,thick}]
      \path [-] (6) edge["1"] (5);
      \path [-] (6) edge["1"] (7);
      \path [-] (6) edge["1"] (8);
  \end{scope}
 \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Eine Alternative zur netten Antwort vonGuilherme Zanotelli(mit weniger Berücksichtigung von OP MWE):

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{quotes}

\begin{document}
    \begin{tikzpicture}[
every edge quotes/.style = {auto, inner sep=1pt, font=\footnotesize},
                    ]
    \begin{scope}[every node/.style = {circle,draw}]
      \node (5) at (0.5,4.5)    {1};
      \node (6) at (3.5,4.5)    {3};
      \node (7) at (1.5,6)      {3};
      \node (8) at (4.5,6)      {1};
    \end{scope}
\draw[thick]    (5) to ["$1$"] (6)
                (7) to ["$1$"] (6)
                (6) to ["$1$"] (8);
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen