如何从现有节点开始笛卡尔布局

如何从现有节点开始笛卡尔布局

我使用该graphs库来创建图形。笛卡尔布局对于我的需求来说是一个非常方便的工具。

有时我需要放置一个相对于由 自动创建的现有节点的新节点\graph,然后从该节点开始一个新的节点链:

需要

不幸的是,在线策略显然从第一个节点开始逻辑宽度这是在此自动创建的\graph

\documentclass[]{article}
\usepackage{tikz}                   
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
    \begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]

    \graph[grow right sep=10mm]
    {
        A[SCbox] ->
        B[SCbox];
    };

    \node (C) [SCbox, below=of B] {C};

    \graph[grow right sep=10mm]
    {
        (C) ->
        D[SCbox];
    };

    \end{tikzpicture}
\end{document}

得到

答案1

我真的不知道为什么人们会期望上述方法有效。在我看来,需要移动整个图表(但我可能错了)。至少这似乎有效,并且它将继续适用于更复杂的图表。

\documentclass[]{article}
\usepackage{tikz}                   
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
    \begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]

    \graph[grow right sep=10mm]
    {
        A[SCbox] ->
        B[SCbox];
    };

    \coordinate[below=of B.west](aux);
  \begin{scope}[shift={(aux)}]  
   \graph[grow right sep=10mm]
    {
        C[SCbox] ->
        D[SCbox];
    };
 \end{scope}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

或者,如果您想要有 1cm 的距离(但这不是这里的重点):

\documentclass[]{article}
\usepackage{tikz}                   
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
    \begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]

    \graph[grow right sep=10mm]
    {
        A[SCbox] ->
        B[SCbox];
    };

    \coordinate[below=of B.south west](aux);
  \begin{scope}[shift={(aux)}]  
   \graph[grow right sep=10mm]
    {[nodes={anchor=north west}]
        C[SCbox] ->
        D[SCbox];
    };
 \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我强调,我不认为这是问题的重点,也不是答案的重点。我对这个问题的解释是,OP 想要“重置路径的原点”,这可以通过范围界定来实现。OP 很可能清楚,这个图表可以用更简单的术语来实现,但我的解释是,OP 想要在一个 tikzpicture 中定位复杂的图表。这可以通过将它们放在范围内来实现。人们可以通过多种方式简化、修改和模糊这一点。

相关内容