Der folgende Code
\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}
erzeugt die folgende Grafik:
Bei näherer Betrachtung ist es offensichtlich, dass die Kante von B nach E sich mit anderen Kanten und dem Knoten A überschneidet. Ich suche nach Anleitungen, wie ich diese bestimmte Kante nach links von den Knoten S und A umleiten kann, um eine Überschneidung mit anderen Kanten und Knoten zu vermeiden. Für jede Hilfe zur Erreichung dieses Ziels wäre ich sehr dankbar.
Antwort1
looseness=2
Eine Lösung besteht darin, die Taste für den \draw
Befehl zu verwenden . Auch die Tasten out
und in
werden geändert. Die Option overlay
wird hinzugefügt, damit der Begrenzungsrahmen nicht zu groß wird.
\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}
Antwort2
Durch die Verwendung der bbox
und quotes
Bibliotheken ist der Bildcode etwas kürzer, klarer und das resultierende Bild ist viel schöner (ohne zusätzlichen Leerraum darum herum):
\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}
Übrigens definieren Sie in Ihrem Codefragment Pfeilspitzen, die dann im Bild nicht verwendet werden. Es ist also etwas unklar, ob Ihr Graph gerichtet ist (Kanten haben Pfeilspitzen) oder nicht. MEIN MWE betrachtet den letzteren Fall: