我想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
声明? 结果是:N1
G1
\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}