如何均匀分布节点或在 tikz 中?

如何均匀分布节点或在 tikz 中?

我想要的是一个框图,其中有一个名为“API”的中心节点,左边有一个名为“用户”的节点,右边有一个名为“工作流”的节点。

但是,由于工作流节点的文本较长,因此它会与其他节点挤压在一起: 在此处输入图片描述

现在我知道我可以增加node distance参数,但是有没有办法说“总是让节点间隔给定的距离”?这样它就不依赖于节点“矩形”的大小了?

以下是该图表的来源:

\begin{tikzpicture}[node distance=15mm]
\tikzstyle{block} = [inner sep=2mm, rectangle, draw, fill=blue!20]

\node [block] (api) {API};
\node [block, right of=api] (workflow) {Workflow};
\node [block, left of=api] (user) {User};

% Connect the blocks
\draw [->] (user) to (api);
\draw [->] (api) to (workflow);

\end{tikzpicture}

编辑:我应该能够使用可以双向移动的箭头,并在其上方和下方添加新节点。

答案1

图书馆chainsTikZ专门针对此问题。以下是一个简单的示例:

\documentclass{article}
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[
start chain,
node distance=5mm, 
every node/.style={draw,on chain,join,fill=blue!20,inner sep=2mm}, 
every join/.style={->}
]
\node {User};
\node  {API};
\node {Workflow};
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:

箭头可以通过join= by <->规范传递给链节点。这是另一个带有随机单词的简单示例。手册中详细解释了用于分支和继续链的库命令。

\documentclass{article}
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[
     start chain,
     node distance=5mm,
     mynode/.style={draw,fill=blue!20,inner sep=2mm,join=by #1},
     mynode/.default=->
]
\node [mynode,on chain] {User};
\node [mynode,on chain] {API};
\node [mynode=<->,on chain] {Workflow};
\node [mynode=<->,on chain=going below] {Update};
\node [mynode=<-,on chain] {Bug Tracker};
\end{tikzpicture}

通常,我们需要保持链节点样式相对于图片的其余部分保持本地化,因此我们可以使用范围,而不是向一般 tikzpicture 环境提供选项。

在此处输入图片描述

答案2

这可能无法充分解决您的问题,但提供了一些解决方法。您可以anchor对周围节点使用非中心节点:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzstyle{block} = [inner sep=2mm, rectangle, draw, fill=blue!20]

\node [block] (api) {API};
\node [block, right=1cm of api] (workflow) {Workflow};
\node [block, left=1cm of api] (user) {User};

% Connect the blocks
\draw [->] (user) to (api);
\draw [->] (api) to (workflow);

\end{tikzpicture}
\end{document}

使用以下方法可以轻松在上方和下方绘制其他节点

\node [block, above=1cm of api] (aboveapi) {Above api};
\node [block, below=1cm of api] (belowapi) {Below api};

箭头方向可以使用以下方法修改

\draw [<->] (..) to (..);

表示双箭头。

相关内容