Ajustando caminhos de borda no TikZ para evitar nós sobrepostos e outras bordas

Ajustando caminhos de borda no TikZ para evitar nós sobrepostos e outras bordas

O seguinte código

\begin{tikzpicture}[auto,node distance=2cm,>=latex]

  % Posizionamento manuale dei vertici
  \node[circle,draw] (A) at (1,2) {A};
  \node[circle,draw] (B) at (3,2) {B};
  \node[circle,draw] (C) at (5,2) {C};
  \node[circle,draw] (D) at (4,0) {D};
  \node[circle,draw] (E) at (0,-1) {E};
  \node[circle,draw] (F) at (2,0) {F};
  \node[circle,draw] (S) at (-0.5,1) {S};

  % Disegno degli archi con pesi
  \draw (A) -- node {$2$} (B);
  \draw (A) -- node {$2$} (S);
  \draw (S) to[out=90,in=120] node[above] {$3$} (B);
  \draw (S) -- node {$1$} (F);
  \draw (S) -- node {$4$} (E);
  \draw (E) -- node {$5$} (F);
  \draw (E) to[out=0,in=220] node[above] {$2$} (D);
  \draw (F) -- node {$3$} (D);
  \draw (C) -- node {$3$} (D);
  \draw (C) -- node {$3$} (B);
  \draw (B) -- node {$6$} (D);
  \draw (B) to[out=90,in=120] node[above] {$1$} (E);
\end{tikzpicture}

produz o seguinte gráfico:

insira a descrição da imagem aqui

Após uma inspeção mais detalhada, fica aparente que a aresta de B a E se sobrepõe a outras arestas e ao nó A. Estou buscando orientação sobre como redirecionar essa aresta específica para a esquerda dos nós S e A, evitando a sobreposição com outras arestas e nós . Qualquer ajuda para conseguir isso seria muito apreciada.

Responder1

Uma solução é usar a chave looseness=2do \drawcomando. Também as chaves oute insão alteradas. A opção overlayé adicionada para que a caixa delimitadora não fique muito grande.

insira a descrição da imagem aqui

\documentclass[border=6pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[auto,node distance=2cm,>=latex]

  % Posizionamento manuale dei vertici
  \node[circle,draw] (A) at (1,2) {A};
  \node[circle,draw] (B) at (3,2) {B};
  \node[circle,draw] (C) at (5,2) {C};
  \node[circle,draw] (D) at (4,0) {D};
  \node[circle,draw] (E) at (0,-1) {E};
  \node[circle,draw] (F) at (2,0) {F};
  \node[circle,draw] (S) at (-0.5,1) {S};

  % Disegno degli archi con pesi
  \draw (A) -- node {$2$} (B);
  \draw (A) -- node {$2$} (S);
  \draw (S) to[out=90,in=120] node[above] {$3$} (B);
  \draw (S) -- node {$1$} (F);
  \draw (S) -- node {$4$} (E);
  \draw (E) -- node {$5$} (F);
  \draw (E) to[out=0,in=220] node[above] {$2$} (D);
  \draw (F) -- node {$3$} (D);
  \draw (C) -- node {$3$} (D);
  \draw (C) -- node {$3$} (B);
  \draw (B) -- node {$6$} (D);
  \draw[looseness=2,overlay] (B) to[out=110,in=130] node[above] {$1$} (E);
\end{tikzpicture}
\end{document}

Responder2

Com o uso das bibliotecas bboxe quoteso código da imagem é um pouco mais curto, mais claro e a imagem resultante é muito melhor (sem espaço em branco extra ao redor):

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

\begin{document}
    \begin{tikzpicture}[bezier bounding box,
                C/.style = {circle, draw, inner sep=2pt},
every edge quotes/.style = {auto, font=\footnotesize, inner sep=2pt},
                        ]
% Posizionamento manuale dei vertici
    \begin{scope}[nodes=C]
\node (A) at (1, 2) {A};
\node (B) at (3, 2) {B};
\node (C) at (5, 2) {C};
\node (D) at (4, 0) {D};
\node (E) at (0,-1) {E};
\node (F) at (2, 0) {F};
\node (S) at (-.5,1){S};
    \end{scope}
% Disegno degli archi con pesi
\draw   (A) edge["$2$"] (S) 
        (A) edge["$2$"] (B)
        (S) edge[bend left=60,"$3$"] (B) 
        (S) edge["$1$"] (F) 
        (S) edge["$4$"] (E) 
        (E) edge["$5$"] (F)
        (E) edge[bend right,"$2$"] (D)
        (E) edge[bend left=90, looseness=2, "$1$"] (B) 
        (F) edge["$3$"] (D) 
        (C) edge["$3$"] (D) 
        (C) edge["$3$"] (B) 
        (B) edge["$6$"] (D);
\end{tikzpicture}
\end{document}

Aliás, no seu fragmento de código você define a ponta da seta que não é usada na imagem. Portanto, não está claro se o seu gráfico está direcionado (as bordas têm pontas de seta) ou não. MEU MWE considera o último caso:

insira a descrição da imagem aqui

informação relacionada