ツリーと簡単なグラフ
子の構文と間隔のノブ。
ツリーと単純なグラフ
解析ツリー、デシジョン ツリー、ファイル レイアウト、分類法などの階層が常に出現します。 「位置決め」を使用して一度に 1 つのボックスを描画することはできますが、兄弟を均等に広げ、レベルを手作業で均等に配置するのは面倒です。 TikZ trees ライブラリを使用すると、代わりにネストされた child 操作を使用して階層自体を記述し、レイアウトを計算できます。
\usetikzlibrary{trees}\begin{tikzpicture}[ every node/.style={draw, circle, minimum size=7mm}, level distance=12mm, sibling distance=18mm]\node{A} child{node{B}} child{node{C} child{node{D}} child{node{E}}};\end{tikzpicture}子の構文の読み取り
この絵には一つの発言が含まれています。これはルート \node{A} から始まり、それに接続された各 child{...} が 1 つのサブツリーを宣言します。通常、子には独自のラベルの node{...} が含まれており、さらに child 操作が含まれる場合があります。これにより、C が子 D と E を取得します。中括弧のネストはツリーのネストを反映しているため、インデントから構造を直接読み取ることができます。 TikZ は各レベルを前のレベルの下に配置し、接続するエッジを自動的に描画します。 one ステートメントは、最後の中括弧の後に単一のセミコロンで終わります。ここでのエラーの通常の原因は、構造体内のセミコロンの欠落または余分なセミコロンです。
3 つのレイアウト ノブ
上部のオプションは、外観と間隔を制御します。 every node/.style={draw,circle, minimum size=7mm} はスタイルをすべてのノードに一度に適用します。各ノードには描画された境界線、円形、最小直径 7 mm が設定されるため、1 つの文字で均一な円が生成されます。 level distance=12mm は、親と子の間の垂直方向の間隔を設定します。 sibling distance=18mm は、同じ親の隣接する子間の水平方向の間隔を設定します。
兄弟の距離は最も調整するノブです。 「trees」ライブラリは、特定のレベルのすべてのサブツリーに同じ幅を予約するため、値が小さすぎると幅の広いサブツリーが衝突する可能性があります。標準的な解決策は、「level 1/.style={sibling distance=36mm}」や「level 2/.style={sibling distance=18mm}」などのレベルごとの設定を使用して、サブツリーが最も広い上部付近の間隔を広げることです。ラベルの幅が大きく異なる場合は、共有スタイルから「circle」を削除して、円から長方形に切り替えます。
小さな木の向こう
エッジは、矢印や太い線を追加するなど、edge fromparent/.style を通じてスタイルを取得します。およそ 12 個のノードを超えるツリー、またはサイクルのある一般的なグラフの場合、「trees」ライブラリは制限的になります。 forest パッケージは、自動パッキングで大きな木を処理します。 graphdrawing アルゴリズムを備えた graphs ライブラリは任意のグラフをカバーしますが、そのパスには LuaLaTeX が必要です。 TikZ はこれらのページ内プレビューではレンダリングしないため、サンプルをコンパイルしてレイアウトを確認してください。この構文が新しい場合は、最初の TikZ 画像 の基本から始めてください。