右方向に成長する 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}
2番目のケースでは、木を構築する方法しか見つかりませんでした。実際には間隔を空けることはできません。
\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}