이 코드가 있습니다
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',auto,node distance=3cm,
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {a};
\node[main node] (2) [right of=1] {b};
\node[main node] (3) [right of=2] {c};
\node[main node] (4) [right of=3] {d};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [right] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4)
(4) edge node [left] {} (1);
\end{tikzpicture}
\end{document}
이는 다음 그래프를 생성합니다.
내 목표는 다음과 같은 그래프를 생성하는 것입니다.
나쁜 그림을 용서하십시오. 나는 다양한 조합을 시도했지만 (4) edge node [bend left] {} (1);
소용 (4) edge node [loop left] {} (1);
이 없었습니다.
답변1
또 다른 접근 방식을 보여주기 위해 이 사용 사례는 정확히 키 bend left
와 키 bend right
가 만들어진 이유입니다.
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',auto,node distance=3cm,
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {a};
\node[main node] (2) [right of=1] {b};
\node[main node] (3) [right of=2] {c};
\node[main node] (4) [right of=3] {d};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [right] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4)
(4) edge[bend right] node [left] {} (1);
\end{tikzpicture}
\end{document}
이러한 키는 및 키를 대칭적으로 <angle>
동시에 설정하기 위한 선택적 값도 허용하므로 다음과 같이 작성합니다.in
out
(4) edge[bend right=90] node [left] {} (1);
결과는 다음과 같습니다
in
및 키 의 비대칭 설정이 out
필요한 경우CFR의 솔루션가는 길입니다.
답변2
\draw
한 가지 접근 방식은 들어오고 나가는 각도를 사용하고 지정하는 것입니다 . 간단히 노드 이름을 지정하면 노드 중심을 기준으로 경로가 구성됩니다(거기에서 그리지는 않지만). 노드 앵커를 지정할 수도 있습니다. 예를 들어 빨간색 선 (4.north)
은 에 연결됩니다 (1.north)
.
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',auto,node distance=3cm,
thick,main node/.style={circle,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {a};
\node[main node] (2) [right of=1] {b};
\node[main node] (3) [right of=2] {c};
\node[main node] (4) [right of=3] {d};
\draw [->] (1) -- (2);
\draw [->] (2) -- (3);
\draw [->] (3) -- (4);
\draw [->] (4) to [out=150,in=30] (1);
\draw [->,red] (4.north) to [out=150,in=30] (1.north);
\end{tikzpicture}
\end{document}
답변3
그것이 문제라면 곡선을 그리는 방법에는 여러 가지가 있습니다. 다음은 하나입니다.
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
[
->,
>=stealth',
auto,node distance=3cm,
thick,
main node/.style={circle, draw, font=\sffamily\Large\bfseries}
]
\node[main node] (1) {a};
\node[main node] (2) [right of=1] {b};
\node[main node] (3) [right of=2] {c};
\node[main node] (4) [right of=3] {d};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [right] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4);
\draw
(4) [out=150, in=20] to (1);
\end{tikzpicture}
\end{document}
다음은 각도를 약간 변경하여 \path
원본 의 일부로 만드는 방법입니다 .edge
\path[every node/.style={font=\sffamily\small}]
(1) edge node [right] {} (2)
(2) edge node [right] {} (3)
(3) edge node [right] {} (4)
(4) edge [out=150, in=90] (1);