我目前正在尝试在 tikz 中表示下图。但是,表示不必完全相同。我最想知道的是建立彼此相关的节点矩阵的最简单方法,其中添加/删除/移动节点尽可能简单。
忽略我在正确间隔节点方面遇到的问题,此代码大多能产生正确的结果
\documentclass[10pt]{article}
\usepackage{mathtools}
\usepackage{tikz}
\usetikzlibrary{arrows, positioning, shapes, matrix}
\tikzset{>=stealth}
\tikzset{%
main/.style = {},
wait/.style = {rectangle,minimum width=0.5cm, minimum height = 0.5cm},
}
\begin{document}
\newcommand{\bx}[1]{|[box, label=#1]|}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes = {node distance=10cm, anchor = center},
continue/.style={draw, rectangle, anchor=center, node distance=10cm},
box/.style={draw, node distance=10cm}]
{
BC & |[continue]| & $\phantom{\neg}$ BC & \\
& |[box]|BPM & $\neg$ BC & \\
& & $\phantom{\neg}$ MP & \\
& |[box]|BPM & & \\
RC & |[continue]| & $\phantom{\neg}$ RC & \\
& & $ \neg $ RC & \\
& & & \\
& & & \\
& |[box]|RP & & \\
PH & |[continue]| & $\phantom{\neg}$ PH & \\
& & $ \neg $ PH & \\
};
% S0 -> AO
\draw[->] (m-1-1) -- (m-1-2);
\draw[->] (m-1-1) -- (m-2-2);
\draw[->] (m-5-1) -- (m-4-2);
\draw[->] (m-5-1) -- (m-5-2);
\draw[->] (m-10-1) -- (m-9-2);
\draw[->] (m-10-1) -- (m-10-2);
% AO
\path[->] (m-1-2.south) edge [bend left=90,looseness=1] (m-2-2.north);
\path[->] (m-5-2.north) edge [bend left=90,looseness=1] (m-4-2.south);
\path[->] (m-9-2.south) edge [bend left=90,looseness=1] (m-10-2.north);
% A0 -> S1
\draw[->] (m-1-2) -- (m-1-3);
\draw[->] (m-2-2) -- (m-2-3);
\draw[->] (m-2-2) -- (m-3-3);
\draw[->] (m-5-2) -- (m-5-3);
\draw[->] (m-4-2) -- (m-6-3);
\draw[->] (m-4-2) -- (m-3-3);
\draw[->] (m-10-2) -- (m-10-3);
\draw[->] (m-10-2) -- (m-11-3);
% S1
\path[-] (m-1-3.south) edge [bend left=90,looseness=1] (m-2-3.north);
\path[-] (m-6-3.north) edge [bend left=90,looseness=1] (m-5-3.south);
\path[-] (m-10-3.south) edge [bend left=90,looseness=1] (m-11-3.north);
\end{tikzpicture}
\end{document}
豪尔一世确实鄙视使用创建节点矩阵的方法。为什么?首先,我忘记了图像中的标签,将这些标签作为单独的节点添加到顶部会导致我必须重新计算所有路径。
忽略这一点,这种方法根本不适合修改。如果我要移动一个节点,我将不得不重新计算每条路径,而获得正确的间距是一件非常痛苦的事情。
假设我确实标记了矩阵中的每个点。现在当我移动点时箭头会更新,但现在节点之间的间距将不平衡。我想尽量避免这种情况。
现在的问题是,我在那个图表中还有更多的行和列,我不太清楚在哪里放置。我的最终目标是一张类似于下面的图表
https://github.com/oyvindrobertsen/TDT4136/blob/master/ex6/gardenplanning.pdf
但请注意。上图是类似但不完全相同的规划图的解决方案。我也尝试过使用相对位置来创建所需的结果,可惜这是徒劳的尝试。