在tikz中在两个节点之间绘制折线

在tikz中在两个节点之间绘制折线

我是 tikz 的初学者,发现下面的内容确实很难做到。

在此处输入图片描述

我在 tikz 中定义并绘制了 node1 和 node2。你可以从图中轻松看出。我打算做的是

  • 从 (node1.south) 到 P1 画一条虚线。

  • 从 P1 到 P2 画一条虚线。

  • 从 P2 到 (node2.north) 画一条尖头虚线。

  • 其中点 P1 是 (node1.south)+(0,-y)。y 是一个正整数,我可以根据 node1 和 node2 之间的 y 轴距离自由选择。

  • 我将点 P2 定义为从 P1 向左延伸的水平线与从 (node2.north) 向上延伸的垂直线的交点。
    此操作在 google 绘图中大致完成,如下所示。

答案1

Qrrbrbirlbel 很棒paths.ortho库非常适合此目的。使用该库,您不必手动计算支撑点,而是可以简单地编写

\draw [dashed, -latex] (A) |-| (B);

要得到

或者

\draw [dashed, -latex, hvvh/ratio=0.7] (A) |-| (B);

要得到

和 Luigi 的超棒arrows.new库,它允许你缩放箭头提示而无需改变线宽或使用装饰,你可以编写

\draw [dashed, -latex new, arrow head=3mm, hvvh/ratio=0.7] (A) |-| (B);

要得到

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{paths.ortho, arrows.new}
\begin{document}
\begin{tikzpicture}
\node [draw] (A) {Node A};
\node [draw] (B) at (-1,-2) {Node B};
\draw [dashed, -latex new, arrow head=3mm, hvvh/ratio=0.7] (A) |-| (B);
\end{tikzpicture}
\end{document}

答案2

可以使用calc库来计算一般点tikz。表达式形式为

($x!t!y$)

将找到从到t沿线的某个点。将此与绘图指令和“先垂直后水平”以及反之亦然相结合,可得出:xy|--|

示例输出

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
  \node[rectangle,fill=blue!30,draw] (A) at (6,4) {Node 1};
  \node[rectangle,fill=blue!30,draw] (B) at (0,0) {Node 2};
  \draw[dashed,->] (A.south) |- ($(A)!.7!(B)$) -| (B.north);
\end{tikzpicture}

\end{document}

有多种方法可以改变箭头。首先,只需编写

\draw[dashed,->,>=stealth]

会给出另一种形状。加载tikzarrows会提供很多选择。使线条变粗也会使箭头更加突出,例如组合

\draw[dashed,->,>=stealth,very thick]

隐形箭样本

请注意,您可以以 开始您的图片,\begin{tikzpicture}[>=stealth,very thick]使所有箭头stealth和所有线条都为very thick

为了更好地控制箭头,您可以使用该decorations机制。 在您的例子中,这可能看起来像:

样品装饰

来自以下代码

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,arrows,decorations.markings}

\begin{document}

\begin{tikzpicture}[>=stealth,decoration={markings,mark=at position 1 with
  {\arrow[scale=3]{>}}}]
  \node[rectangle,fill=blue!30,draw] (A) at (6,4) {Node 1};
  \node[rectangle,fill=blue!30,draw] (B) at (0,0) {Node 2};
  \draw[dashed,postaction={decorate}] 
  (A.south) |- ($(A)!.7!(B)$) -| (B.north);
\end{tikzpicture}

\end{document}

查看pgf手动的了解更多细节和构造。另一幅通过装饰绘制的箭头插图可参见TikZ:平滑曲线末端的大箭头

相关内容