如何在 TikZ 中设置节点之间的距离

如何在 TikZ 中设置节点之间的距离

我正在尝试为论文绘制网络图,使用 TikZ 将各个页面绘制为节点。但是,当我排版时,图表位于线的一个小角落,节点太近了。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

环境tikzpicture只需要可选参数。即,如果 LaTeX 看到[之后\begin{tikzpicture},它会抓取它看到的第一个之前的所有内容],这就是环境的选项。当你有 时\begin{tikzpicture}[..][..],我认为第二个括号对实际上只是作为普通文本读取,而 TiKZ 通常会尝试抑制任何不是pgf/TikZ 命令的内容,因此它基本上会被忽略。

所以总而言之,a 的所有选项tikzpicture都必须放在同一个括号对中。

如果您相应地更改代码(并删除放错位置的?stealth,您会发现您的node distance设置按预期工作。

话虽如此,您可能希望遵循 TeXnicians 的建议来使用该positioning库,并使用 egright=of而不是right of=。有关此内容的一些讨论可参见PGF/TikZ 中“right of=”和“right=of”之间的区别。使用该positioning库的另一个原因是,您可以分别设置水平和垂直节点距离,方法是编写node distance=Ycm and Xcm,下面的代码中有一个示例。正如 gernot 在评论中提到的那样,在这种情况下,人们可能还想添加on grid到节点样式中。on 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}

相关内容