Erhöhen Sie die Biegedistanz eines „Bis“-Pfades in TikZ

Erhöhen Sie die Biegedistanz eines „Bis“-Pfades in TikZ

Ich habe ein Problem mit einem kleinen Graphen. Der Pfad zwischen den KnotenJUndBsollte rechts vom KnotenICH.

Gibt es eine Möglichkeit, dies zu tun?

\documentclass[11pt]{article} 
\pagestyle{empty}  
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,automata}

\begin{document}
\centering
\begin{tikzpicture}[>=stealth',shorten >=1pt,node distance=2cm,on grid,initial/.style    ={}]
    \node[state]        (0)                     {};
    \node[state]        (A) [below =of 0]       {};
    \node[state]        (B) [below =of A]       {B};
    \node[state]        (C) [below left =of B]      {};
    \node[state]        (D) [below left =of C]      {};
    \node[state]        (E) [below right =of C]     {};
    \node[state]        (F) [below left =of D]      {};
    \node[state]        (G) [below right =of D]     {};
    \node[state]        (H) [below right =of E]     {};
    \node[state]        (I) [right =of H]       {I};
    \node[state]        (J) [yshift=-2cm,below right =of G]     {J};
    \node[state]        (X) [yshift=-1cm,below =of J]       {};
    
    \tikzset{mystyle/.style={->}} 
    \path   (0) edge    [mystyle]   node    {}  (A);
    \path   (A) edge    [mystyle]   node    {}  (B);
    \path   (B) edge    [mystyle]   node    {}  (C);
    \path   (C) edge    [mystyle]   node    {}  (D);
    \path   (C) edge    [mystyle]   node    {}  (E);
    \path   (D) edge    [mystyle]   node    {}  (F);
    \path   (D) edge    [mystyle]   node    {}  (G);
    \path   (E) edge    [mystyle]   node    {}  (H);
    \path   (B) edge    [mystyle]   node    {}  (I);
    \path   (F) edge    [mystyle]   node    {}  (J);
    \path   (G) edge    [mystyle]   node    {}  (J);
    \path   (H) edge    [mystyle]   node    {}  (J);
    \path   (I) edge    [mystyle]   node    {}  (J);
    \path   (J) edge    [mystyle]   node    {}  (X);
    
    \tikzset{mystyle/.style={->,relative=false,in=0,out=0}}
    \draw [->] (J) to [bend right=100 ] (B);
    %\path  (J) edge    [mystyle]   node    {}  (B); %similar problem
\end{tikzpicture}

\end{document}

Ausgabe

Antwort1

Sagen Sie ihm einfach, er soll sich nach rechts bewegen, indem er einen Zwischenpunkt hinzufügt

ich habe die Bibliothek verehrt:calc

und den Weg ändern: \draw [->] (J) to [out=0,in=-90] ($(I)+(1,0)$) to [out=90, in=0 ] (B);

\documentclass[11pt]{article} 
\pagestyle{empty}  
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,automata,calc}

\begin{document}
\centering
\begin{tikzpicture}[>=stealth',shorten >=1pt,node distance=2cm,on grid,initial/.style    ={}]
    \node[state]        (0)                     {};
    \node[state]        (A) [below =of 0]       {};
    \node[state]        (B) [below =of A]       {B};
    \node[state]        (C) [below left =of B]      {};
    \node[state]        (D) [below left =of C]      {};
    \node[state]        (E) [below right =of C]     {};
    \node[state]        (F) [below left =of D]      {};
    \node[state]        (G) [below right =of D]     {};
    \node[state]        (H) [below right =of E]     {};
    \node[state]        (I) [right =of H]       {I};
    \node[state]        (J) [yshift=-2cm,below right =of G]     {J};
    \node[state]        (X) [yshift=-1cm,below =of J]       {};

    \tikzset{mystyle/.style={->}} 
    \path   (0) edge    [mystyle]   node    {}  (A);
    \path   (A) edge    [mystyle]   node    {}  (B);
    \path   (B) edge    [mystyle]   node    {}  (C);
    \path   (C) edge    [mystyle]   node    {}  (D);
    \path   (C) edge    [mystyle]   node    {}  (E);
    \path   (D) edge    [mystyle]   node    {}  (F);
    \path   (D) edge    [mystyle]   node    {}  (G);
    \path   (E) edge    [mystyle]   node    {}  (H);
    \path   (B) edge    [mystyle]   node    {}  (I);
    \path   (F) edge    [mystyle]   node    {}  (J);
    \path   (G) edge    [mystyle]   node    {}  (J);
    \path   (H) edge    [mystyle]   node    {}  (J);
    \path   (I) edge    [mystyle]   node    {}  (J);
    \path   (J) edge    [mystyle]   node    {}  (X);

    \tikzset{mystyle/.style={->,relative=false,in=0,out=0}}
    \draw [->] (J) to [out=0,in=-90] ($(I)+(1,0)$) to [out=90, in=0 ] (B);
    %\path  (J) edge    [mystyle]   node    {}  (B); %similar problem
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Sie können mit der looseness=<value>Legende spielen: Je größer die Zahl, desto breiter wird die Kurve. Dieses Beispiel veranschaulicht es. Ersetzen Sie einfach das drawdurch das Folgende:

Ersatz:

\foreach \x [evaluate=\x as \c using \x*30] in {0.2,0.4,...,3}
{\draw[->,red!\c!blue] (J) to[out=30-20*\x,in=20*\x-30,looseness=\x] (B);}

Wirkung:

mit zunehmender Lockerheit (von 0,2 bis 3) verblasst die Farbe von blau nach rot.

Bildbeschreibung hier eingeben

verwandte Informationen