
코드에서 얻은 이미지가 첨부되어 있습니다.
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node (S) {};
\node[main node] (0) [node distance=1.1cm,below of=S] {$s$};
\node[main node] (3) [node distance=2.2cm,below of=0] {3};
\node[main node] (2) [node distance=2.2cm,left of=3] {2};
\node[main node] (1) [node distance=2.2cm,left of=2] {1};
\node[main node] (4) [node distance=2.2cm,right of=3] {4};
\node[main node] (5) [node distance=2.2cm,right of=4] {5};
\node (6) [node distance=1.1cm,below of=1] {};
\node (7) [node distance=1.1cm,below of=2] {};
\node (8) [node distance=1.4cm,below left of=3] {};
\node (9) [node distance=1.1cm,below of=4] {};
\node (10) [node distance=1.1cm,below of=5] {};
\node[main node] (T) [node distance=2.75cm,below of=3] {$t$};
\path[every node/.style={font=\sffamily\small}]
(S) edge node [right] {} (0)
(0) edge node [left] {} (1)
edge node [left] {} (2)
edge node [right] {} (3)
edge node [left] {} (4)
edge node [right] {} (5)
(1) edge node [above] {} (2)
edge node [left] {} (6)
edge node [left] {} (T)
(2) edge node [above] {} (3)
edge node [left] {} (7)
edge node [left] {} (T)
(3) edge node [above] {} (4)
edge node [left] {} (8)
edge node [left] {} (T)
(4) edge node [above] {} (5)
edge node [right] {} (9)
edge node [right] {} (T)
(5) edge node [right] {} (10)
edge node [right] {} (T)
;
\end{tikzpicture}
TIKZ 패키지를 사용하여 "빨간색" 가장자리를 그리는 방법을 알고 싶습니다.
감사해요.
답변1
여러 가지 가능성이 있습니다. 그 중 하나는
to[out=<angle>,in=<angle>,looseness=<value>]
구문 \draw
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node (S) {};
\node[main node] (0) [node distance=1.1cm,below of=S] {$s$};
\node[main node] (3) [node distance=2.2cm,below of=0] {3};
\node[main node] (2) [node distance=2.2cm,left of=3] {2};
\node[main node] (1) [node distance=2.2cm,left of=2] {1};
\node[main node] (4) [node distance=2.2cm,right of=3] {4};
\node[main node] (5) [node distance=2.2cm,right of=4] {5};
\node (6) [node distance=1.1cm,below of=1] {};
\node (7) [node distance=1.1cm,below of=2] {};
\node (8) [node distance=1.4cm,below left of=3] {};
\node (9) [node distance=1.1cm,below of=4] {};
\node (10) [node distance=1.1cm,below of=5] {};
\node[main node] (T) [node distance=2.75cm,below of=3] {$t$};
\draw (T) to[out=180,in=180,looseness=4] (0);
\draw (5) to[out=-20,in=0,looseness=2] (T);
\path[every node/.style={font=\sffamily\small}]
(S) edge node [right] {} (0)
(0) edge node [left] {} (1)
edge node [left] {} (2)
edge node [right] {} (3)
edge node [left] {} (4)
edge node [right] {} (5)
(1) edge node [above] {} (2)
edge node [left] {} (6)
edge node [left] {} (T)
(2) edge node [above] {} (3)
edge node [left] {} (7)
edge node [left] {} (T)
(3) edge node [above] {} (4)
edge node [left] {} (8)
edge node [left] {} (T)
(4) edge node [above] {} (5)
edge node [right] {} (9)
edge node [right] {} (T)
(5) edge node [right] {} (10)
edge node [right] {} (T)
;
\end{tikzpicture}
\end{document}
또 다른 하나는 라이브러리를 사용하는 것 .. controls ..
입니다 calc
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node (S) {};
\node[main node] (0) [node distance=1.1cm,below of=S] {$s$};
\node[main node] (3) [node distance=2.2cm,below of=0] {3};
\node[main node] (2) [node distance=2.2cm,left of=3] {2};
\node[main node] (1) [node distance=2.2cm,left of=2] {1};
\node[main node] (4) [node distance=2.2cm,right of=3] {4};
\node[main node] (5) [node distance=2.2cm,right of=4] {5};
\node (6) [node distance=1.1cm,below of=1] {};
\node (7) [node distance=1.1cm,below of=2] {};
\node (8) [node distance=1.4cm,below left of=3] {};
\node (9) [node distance=1.1cm,below of=4] {};
\node (10) [node distance=1.1cm,below of=5] {};
\node[main node] (T) [node distance=2.75cm,below of=3] {$t$};
\draw let \p1=(T), \p2=(0) in
(T) .. controls ([xshift=-8cm]\x1,.5*\y1+.5*\y2) .. (0);
\draw let \p1=(5), \p2=(T) in
(5) .. controls ([xshift=2cm]\x1,.5*\y1+.5*\y2) .. (T);
\path[every node/.style={font=\sffamily\small}]
(S) edge node [right] {} (0)
(0) edge node [left] {} (1)
edge node [left] {} (2)
edge node [right] {} (3)
edge node [left] {} (4)
edge node [right] {} (5)
(1) edge node [above] {} (2)
edge node [left] {} (6)
edge node [left] {} (T)
(2) edge node [above] {} (3)
edge node [left] {} (7)
edge node [left] {} (T)
(3) edge node [above] {} (4)
edge node [left] {} (8)
edge node [left] {} (T)
(4) edge node [above] {} (5)
edge node [right] {} (9)
edge node [right] {} (T)
(5) edge node [right] {} (10)
edge node [right] {} (T)
;
\end{tikzpicture}
\end{document}
오래되고 문제가 있는 구문 대신 positioning
라이브러리를 로드하고 구문을 사용하는 것을 고려해야 합니다 . 또한 옵션을 사용하면 각 노드에 대한 거리를 수동으로 지정하지 않아도 됩니다.= of
of=
node distance=<length> and <lenght>
tikzpicture
이러한 제안을 사용한 첫 번째 옵션의 코드는 다음과 같습니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries},node distance=2.2cm and 1.1 cm]
\node (S) {};
\node[main node] (0) [below = 0.8cm of S] {$s$};
\node[main node] (3) [below = of 0] {3};
\node[main node] (2) [left = of 3] {2};
\node[main node] (1) [left = of 2] {1};
\node[main node] (4) [right = of 3] {4};
\node[main node] (5) [right = of 4] {5};
\node (6) [below = 0.8cm of 1] {};
\node (7) [below = 0.8cm of 2] {};
\node (8) [below left = 0.8cm of 3] {};
\node (9) [below = 0.8cm of 4] {};
\node (10) [below = 0.8cm of 5] {};
\node[main node] (T) [below = of 3] {$t$};
\draw (T) to[out=180,in=180,looseness=3] (0);
\draw (5) to[out=-20,in=0,looseness=2] (T);
\path[every node/.style={font=\sffamily\small}]
(S) edge node [right] {} (0)
(0) edge node [left] {} (1)
edge node [left] {} (2)
edge node [right] {} (3)
edge node [left] {} (4)
edge node [right] {} (5)
(1) edge node [above] {} (2)
edge node [left] {} (6)
edge node [left] {} (T)
(2) edge node [above] {} (3)
edge node [left] {} (7)
edge node [left] {} (T)
(3) edge node [above] {} (4)
edge node [left] {} (8)
edge node [left] {} (T)
(4) edge node [above] {} (5)
edge node [right] {} (9)
edge node [right] {} (T)
(5) edge node [right] {} (10)
edge node [right] {} (T)
;
\end{tikzpicture}
\end{document}
를 사용하면 pgfinterruptboundingbox
경계 상자 계산을 일시적으로 중단할 수 있으므로 새 \draw
명령으로 인해 추가 공간이 추가되지 않습니다.
\documentclass{article}
\usepackage{tikz}
\usepackage{showframe}
\usetikzlibrary{arrows,positioning}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries},node distance=2.2cm and 1.1 cm]
\node (S) {};
\node[main node] (0) [below = 0.8cm of S] {$s$};
\node[main node] (3) [below = of 0] {3};
\node[main node] (2) [left = of 3] {2};
\node[main node] (1) [left = of 2] {1};
\node[main node] (4) [right = of 3] {4};
\node[main node] (5) [right = of 4] {5};
\node (6) [below = 0.8cm of 1] {};
\node (7) [below = 0.8cm of 2] {};
\node (8) [below left = 0.8cm of 3] {};
\node (9) [below = 0.8cm of 4] {};
\node (10) [below = 0.8cm of 5] {};
\node[main node] (T) [below = of 3] {$t$};
\begin{pgfinterruptboundingbox}
\draw (T) to[out=180,in=180,looseness=3] (0);
\draw (5) to[out=-20,in=0,looseness=2] (T);
\end{pgfinterruptboundingbox}
\path[every node/.style={font=\sffamily\small}]
(S) edge node [right] {} (0)
(0) edge node [left] {} (1)
edge node [left] {} (2)
edge node [right] {} (3)
edge node [left] {} (4)
edge node [right] {} (5)
(1) edge node [above] {} (2)
edge node [left] {} (6)
edge node [left] {} (T)
(2) edge node [above] {} (3)
edge node [left] {} (7)
edge node [left] {} (T)
(3) edge node [above] {} (4)
edge node [left] {} (8)
edge node [left] {} (T)
(4) edge node [above] {} (5)
edge node [right] {} (9)
edge node [right] {} (T)
(5) edge node [right] {} (10)
edge node [right] {} (T)
;
\end{tikzpicture}
\caption[loftitle]{Graph}
\end{figure}
\end{document}
showframe
텍스트 영역에 대한 시각적 지침을 제공하는 데에만 사용되었습니다.