오른쪽으로 성장하는 DAG(방향성 비순환 그래프)를 그리고 싶습니다. 여기서 모든 노드는 고정된 크기로 다른 노드와 간격을 두고 있지만 일부 시간 노드는 누락될 수 있으므로 그 공간을 계속 고려하고 싶습니다. :
예를 들어, F와 D 사이의 거리는 A와 D 사이의 거리와 같아야 합니다.
동시에, 나는 그 뒤에 플롯을 그려서 올바른 간격이 어떻게 지정되었는지 이해하는 데 도움이 되는 선을 그리고 싶습니다.
첫 번째 예에서는 노드가 정확히 어디에 있어야 하는지 지정하는 방법만 찾았습니다(대신 자동 위치 지정에 이상적임).
\begin{tikzpicture}[
grow=right,
level distance=200mm,
sibling distance=105mm]
\node[shape=circle,draw=black] (A) at (0, 0){A};
\node[shape=circle,draw=black] (B) at (1,-1) {B};
\node[shape=circle,draw=black] (C) at (1,1) {C};
\node[shape=circle,draw=black] (D) at (2,0) {D};
\node[shape=circle,draw=black] (F) at (4,0) {F} ;
\path [<-](A) edge node[right] {} (B);
\path [<-](A) edge node[right] {} (C);
\path [<-](B) edge node[right] {} (D);
\path [<-](C) edge node[right] {} (D);
\path [<-](D) edge node[right] {} (F);
\end{tikzpicture}
두 번째 경우에는 나무를 만드는 방법만 찾았습니다. 실제로 공간을 확보할 수는 없었습니다.
\begin{tikzpicture}[
grow=right,
level distance=20mm,
sibling distance=10mm,
every node/.style={draw=black,border=1mm,circle,inner sep=5pt}
]
\draw [help lines, dashed,ystep=5, xstep=2] (0,0) grid(15, 5);
\node {0}
child { node {1} }
child { node {2}
child { node {3}
child { node {4} }
child { node {5} }
child { node {6} } }
child { node {7} } };
;
\end{tikzpicture}
내가 원하는 것을 달성할 수 있는 방법이 있나요?
답변1
관련 코드 요소:
라이브러리를 사용하면 등을
positioning
사용하여 다른 노드를 기준으로 노드를 배치할 수 있습니다above
.below
거리는 옵션으로 제어됩니다node distance
. 노드 중심을 고정된 거리에 배치하려면 옵션이 필요합니다on grid
(그렇지 않으면 노드 경계 사이의 거리가 측정됩니다).노드가 백그라운드에서 그리드를 덮도록 하려면
fill=white
노드와 함께 사용하십시오.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}%
[vertex/.style={circle,draw=black,fill=white},
node distance=2cm,
on grid,
>=latex
]
\draw[gray!50] (-1,-2) grid (5,2);
\node[vertex] (A) {A};
\node[vertex,above right=1cm and 1cm of A] (B) {B};
\node[vertex,below=of B] (C) {C};
\node[vertex,right=of A] (D) {D};
\node[vertex,right=of D] (F) {F};
\draw[->]
(C) edge (A)
(B) edge (A)
(D) edge (C)
(D) edge (B)
(F) edge (D);
\end{tikzpicture}
\end{document}