TikZ でノード間の距離を設定する方法

TikZ でノード間の距離を設定する方法

私は論文用の Web グラフを描こうとしています。TikZ を使用して個々のページをノードとして描画します。しかし、タイプセットすると、グラフは線の 1 つの小さな角に配置され、ノードが近すぎます。node distanceは機能せず、minimum sizeノードが互いに重なるように拡張されるだけです。ノード間の最小距離を設定するにはどうすればよいでしょうか。 ありがとうございます。

未完成の(まだ線がない)グラフは次のようになります。

ここに画像の説明を入力してください

理想的には、ページの幅と同じ幅で、ノードは互いに離れた位置に分散される必要があります。

私のコードは次のようになります:

 \documentclass[12pt, oneside]{amsart}      
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}

\begin{document}

\tikzstyle{node}=[circle, draw=black!100, thick]
\tikzstyle{dangling node}=[circle, draw=black!100, fill=black!30, thick]
\begin{tikzpicture}[minimum size=5mm][node distance=5.3cm,>=stealth?,bend angle=45,auto]
  \node[node](page 1){1};
  \node[node](page 2)[right of=page 1]{2};
  \node[node](page 3)[below of=page 1]{3};
  \node[node](page 4)[below of=page 2]{4};
  \node[dangling node](page 5)[below of=page 3, xshift=5mm]{5};
\end{tikzpicture}

\end{document}

答え1

環境tikzpicture1つオプションの引数。つまり、LaTeX が[の後にを見つけた場合\begin{tikzpicture}、最初に見つけたものまですべてを取得し]、それが環境のオプションになります。 がある場合\begin{tikzpicture}[..][..]、2 番目の括弧のペアは実際には通常のテキストとして読み取られるだけだと思います。また、TiKZ は一般に /TikZ コマンド以外のものをすべて抑制しようとするpgfため、基本的に無視されます。

まとめると、 a のすべてのオプションはtikzpicture同じ括弧のペアに配置する必要があります。

それに応じてコードを変更すると(?の後の誤った部分を削除すると)、設定が期待どおりに動作するstealthことがわかります。node distance

positioningとはいえ、TeXniciansのアドバイスに従ってライブラリを使用し、right=ofの代わりにeg と入力するとよいかもしれませんright of=。これに関する議論は、PGF/TikZ における "right of=" と "right=of" の違いライブラリを使用するもう 1 つの理由は、positioningと記述することで、水平方向と垂直方向のノード距離を別々に設定できることです。例は以下のコードで確認できます。gernot がコメントで述べているように、その場合はノード スタイルにnode distance=Ycm and Xcmも追加する必要があるでしょう。は、距離がノードの中心点から計算されることを意味します。on gridon grid

最後に、あるスタイルを別のスタイル内に置くことができるので、dangling nodeが と同じスタイルである場合node、 を追加してfillとすることができますdangling node/.style={node,fill=black!30}。これにより、コードの重複が減り、変更が容易になります。

ここに画像の説明を入力してください

\documentclass[12pt, oneside]{amsart}
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
  node/.style={circle, draw=black!100, thick, on grid}, % on grid added
  dangling node/.style={node, fill=black!30}
}
\begin{document}
\begin{center}
\begin{tikzpicture}[
  minimum size=5mm,
  node distance=4cm and 7cm,
  >=stealth,
  bend angle=45,
  auto
]
  % grid to easier see that the node centers line up  
  \draw [help lines] (-1,-9) grid (9,1);

  \node[node](page 1){1};
  \node[node](page 2)[right=of page 1]{22};
  \node[node](page 3)[below=of page 1]{3333};
  \node[node](page 4)[below=of page 2]{4555555};
  \node[dangling node](page 5)[below=of page 3, xshift=5mm]{5};
\end{tikzpicture}
\end{center}
\end{document}

関連情報