相对于另一个节点定位图的起始节点

相对于另一个节点定位图的起始节点

我想graph使用该库启动相对于另一个预先存在的节点 (N1) 的第一个节点 (G1) positioning。我希望它显示如下:

N1
G1 -  - G2
        N2

我在下面附加了一个 MWE。

我的第一次尝试是在图表的开头进行指定\path[below=of N1],但是没有成功,因为 G1 和下面的图表是一致的。

我的第二次尝试非常接近我想要的结果,即定义一个坐标[below=of N1](Gstart)shift图形。这个尝试的一个小问题是G1稍微偏移了一点(参见我在图片上标记的红墨水)。

请注意,我可以按照我的预期将节点 N2 相对于图节点 G2 进行定位。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,graphs}

\begin{document}


\begin{tikzpicture}[inner sep = 0pt, outer sep = 0pt,]
\tikzset{node distance = 1cm and 2cm}

\node (N1) {N1};

%%% First attempt
\path[below=of N1] graph [grow right sep=2cm]{ G1 -- P/ -- G2};  %%% graph doesnt start below if I try this

%%% My solution, gets me a bit close, but the graph is horizontally offset a bit
\coordinate [below=of N1](Gstart);
\path[shift={(Gstart)}] graph [grow right sep=2cm]{ G1 -- P/ -- G2};  %%% graph doesnt start below

\node (N2) [below=of G2] {N2};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

您是否仍然相关而不是在G1下面设置而是在上面N1声明? 结果是:N1G1

\begin{document}


\begin{tikzpicture}[inner sep = 0pt, outer sep = 0pt]
\tikzset{node distance = 1cm and 2cm}
%%% First attempt
%\path graph [grow right sep=2cm]{ G1 -- P/ -- G2};  %%% graph doesnt start below if I try this

%%% My solution, gets me a bit close, but the graph is horizontally offset a bit
\path graph[grow right sep=1cm]{G1--P/--G2};  %%% graph doesnt start below
\node(N2)[below=of G2] {N2};
\node[above of =G1](N1){N1};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

我没有深入探讨你的安置的优点

您所面临的问题可以通过pgf手册第 301 页给出的解决方案来解决,方法是使用带有选项的图表[no placement]

通过改变 x 和 y 坐标,可以将图形放置在您选择的网格上 - 此外,一旦设置了坐标,它将保持设置为图形中的下一个节点,只需改变一个坐标即可放置该节点x-y无需改变两个坐标

为了更好地理解,请参见下面的示例

\tikz \graph [no placement]
{
    a ->
    { [x=1] % group option
        b [y=0] -> c[y=1]
    };
};

结果是

在此处输入图片描述

使用代码将相同的策略应用于您的案例 -

\tikz\graph[no placement]
{
N1,
G1[y=-1]--G2[x=2,y=-1]
};

结果是

在此处输入图片描述

如您所见,没有对齐问题——您现在可以根据需要扩展图表

完成 MWE

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,graphs}

\begin{document}

\tikz\graph[no placement]
{
N1,
G1[y=-1]--G2[x=2,y=-1]
};
\end{document}

编辑第二次审判 改编自 - TikZ Graph 与 \usebox 命令不起作用

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,graphs}

\begin{document}



\begin{tikzpicture}[inner sep = 0pt, outer sep = 0pt,]
\tikzset{node distance = 1cm and 2cm}
\coordinate (m);
\node (n)     [right= 0pt of m] {N1};


\begin{scope}[yshift=-1cm,local bounding box=A1]
      \graph [grow right sep=2cm]{ "G1" -- b/ -- "G2"}; 
    



\end{scope}
\path (A1.west) node[below=1em, align =left]{``working with N1\\ outside the scope''};

\end{tikzpicture}

\end{document}

相关内容