TikZ에서 'to' 경로의 굽힘 거리를 늘립니다.

TikZ에서 'to' 경로의 굽힘 거리를 늘립니다.

작은 그래프에 문제가 있습니다. 노드 사이의 경로제이그리고노드 오른쪽에 있어야 함.

이를 수행할 수 있는 방법이 있습니까?

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

산출

답변1

중간 지점을 추가하여 오른쪽으로 이동하라고 말하세요.

j'ai rajouté la librairie:calc

et modifié le chemin: \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}

여기에 이미지 설명을 입력하세요

답변2

키를 가지고 놀 수 있습니다 looseness=<value>. 숫자가 클수록 곡선이 넓어집니다. 이 예에서는 이를 보여줍니다. 를 draw다음으로 바꾸십시오.

대사:

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

효과:

느슨함이 증가하면(0.2에서 3으로) 색상이 파란색에서 빨간색으로 희미해집니다.

여기에 이미지 설명을 입력하세요

관련 정보