Следующий код
\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}
получается следующий график:
При более близком рассмотрении становится очевидным, что ребро от B до E перекрывается с другими ребрами и узлом A. Я ищу руководство о том, как перенаправить это конкретное ребро влево от узлов S и A, предотвращая перекрытие с другими ребрами и узлами. Любая помощь в достижении этого была бы весьма признательна.
решение1
Решение — использовать клавишу looseness=2
для \draw
команды. Также клавиши out
и in
изменены. Опция overlay
добавлена для того, чтобы ограничивающая рамка не стала слишком большой.
\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}
решение2
Благодаря использованию библиотек bbox
и quotes
код изображения становится немного короче, более понятным, а полученное изображение намного красивее (без лишних пробелов вокруг него):
\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}
Кстати, в вашем фрагменте кода вы определяете наконечники стрелок, которые затем не используются на рисунке. Так что немного неясно, направлен ваш граф (ребра имеют наконечники стрелок) или нет. MY MWE рассматривает последний случай: