我是 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
沿线的某个点。将此与绘图指令和“先垂直后水平”以及反之亦然相结合,可得出:x
y
|-
-|
\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]
会给出另一种形状。加载tikz
库arrows
会提供很多选择。使线条变粗也会使箭头更加突出,例如组合
\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:平滑曲线末端的大箭头。