Gráfico en tikz: posicionamiento de etiquetas ortogonales de borde

Gráfico en tikz: posicionamiento de etiquetas ortogonales de borde

Estoy usando tikz para trazar gráficos, cada borde tendrá una etiqueta de borde. Esta etiqueta de borde debe estar al lado de lacentrodel borde.

Puse un edge nodeen cada borde. Debería haber un pequeñoortogonaldistancia desde la etiqueta hasta el centro del borde. Entonces, comenzando desde el centro del borde, recorra una distancia específica a lo largo de la dirección ortogonal del borde y coloque la etiqueta allí.

Hasta ahora tengo eso que no funciona bien.

\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}

Respuesta1

¿Qué tal usar la quotesbiblioteca en lugar de edge nodes? Luego puede especificar el nodo de borde dentro del propio borde mediante edge["1"]. La posición del nodo de borde se controla mediante la tecla autoque puede tomar lefto right.

El significado de la clave lefty righthacia autoes que el nodo se colocará a la izquierda del camino respetando su dirección (por ejemplo, auto=leftsi el camino va de izquierda (0,0)a derecha, (1,0)el nodo se colocará en el camino a mitad del camino y arriba).

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}

ingrese la descripción de la imagen aquí

Respuesta2

Una alternativa a la buena respuesta deGuilherme Zanotelli(con menos consideración de 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}

ingrese la descripción de la imagen aquí

información relacionada