在两个节点之间添加直角路径

在两个节点之间添加直角路径

我试图在两个节点之间添加一条边,但得到了意想不到的结果。

我想在节点gh和之间添加一条路径,其方式与在、和i之间添加的方式类似。但是,当我尝试这样做时,我得到了一个意想不到的结果——路径向后而不是朝向节点:生成的最终线条显示为红色。我似乎误解了语法;请问我该如何纠正?abch

在此处输入图片描述

代码:

\documentclass[tikz]{standalone}    
\usetikzlibrary{calc}    
\begin{document}    
\begin{tikzpicture}[node distance = 3cm, auto]    
     \node (a) {a};
     \node [above right of=a, xshift=2cm] (b) {b};
     \node [below right of=a, xshift=2cm] (c) {c};
     \node [right of=b] (d) {d};
     \node [above right of=d, yshift=-1cm] (e) {e};
     \node [below right of=d, yshift=1cm] (f) {f};
     \node [right of=e] (g) {g};
     \node [above right of=g, xshift=2cm] (h) {h};
     \node [below right of=g, xshift=2cm] (i) {i};  
     \draw (a.east) -| (45:20mm) |- (b.west);
     \draw (a.east) -| (-45:20mm) |- (c.west);
     % offending line
     \draw[red] (g.east) -| (45:20mm) |- (h.west);;
\end{tikzpicture}
\end{document}

答案1

问题是 是(45:2mm)绝对坐标,恰好位于 的左侧g。在 的情况下abc会得到所需的结果,因为a恰好位于(0,0),这是如果您未指定任何位置时使用的默认位置,因此“意外”(45:2mm)位于 的右侧a。可以说更简洁的方法是在所有坐标前面添加+++(在这种情况下,这没有区别,因为这是路径的第二个坐标)(45:2mm)

\documentclass[tikz]{standalone}    
\usetikzlibrary{calc}    
\begin{document}    
\begin{tikzpicture}[node distance = 3cm, auto]    
     \node (a) {a};
     \node [above right of=a, xshift=2cm] (b) {b};
     \node [below right of=a, xshift=2cm] (c) {c};
     \node [right of=b] (d) {d};
     \node [above right of=d, yshift=-1cm] (e) {e};
     \node [below right of=d, yshift=1cm] (f) {f};
     \node [right of=e] (g) {g};
     \node [above right of=g, xshift=2cm] (h) {h};
     \node [below right of=g, xshift=2cm] (i) {i};  
     \draw (a.east) -| +(45:20mm) |- (b.west);
     \draw (a.east) -| +(-45:20mm) |- (c.west);
     % no longer offending line
     \draw[red] (g.east) -| +(45:20mm) |- (h.west);;
\end{tikzpicture}
\end{document}

在此处输入图片描述

这样,当您决定四处走动时,就不会遇到不好的意外a

forest最后我要说的是,可以使用基于 的方便地生成此类图表tikz

\documentclass[tikz,border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
for tree={forked edges,text height=0.75em,text depth=0.25ex,grow'=0}
  [a
   [b
    [d
     [e
      [g
       [h]
       [i]
      ]
      ]
     [f]
    ]
   ]
   [c]
  ]
\end{forest}
\end{document}

在此处输入图片描述

相关内容