Tikz 在 Digraph 上绘图而不使用 [->] 重复每个圆弧命令?

Tikz 在 Digraph 上绘图而不使用 [->] 重复每个圆弧命令?

案例 1 的图表是正确的,但重复了弧的语句。相比之下,案例 2 更容易编写,而且不需要重复弧的语句。我觉得必须有一个样式命令或类似命令来避免重复命令,并指定每个边都指向某个方向。所以

如何使用 Tikz Draw 绘制圆弧,而不用使用 [->] 重复每个圆弧命令?

1. 案例:目标如下,所有边均有方向

在此处输入图片描述

\draw[->] (Input)--(1);
\draw[->] (1)--(2);
\draw[->] (2)--(Output);
\draw[->] (Input)--(3);
\draw[->] (3)--(4);
\draw[->] (4)--(Output);
\draw[->] (Input)--(5);
\draw[->] (5)--(7);
\draw[->] (7)--(Output);
\draw[->] (Input)--(6);
\draw[->] (6)--(7);

2. 不是像这样,有些边缘没有指向

在此处输入图片描述

\draw[->] (Input)--(1)--(2)--(Output);
\draw[->] (Input)--(3)--(4)--(Output);
\draw[->] (Input)--(5)--(7)--(Output);
\draw[->] (Input)--(6)--(7)--(Output);

答案1

要点 1:避免重复->

您可以全局设置选项(或使用范围)

% \usetikzlibrary{automata} for `state` key
\begin{tikzpicture}[->]

\foreach[count=\i] \n in {A,B,C,D,E}{
    \node[state] at (\i*60:1+rnd*3)  (\n) {\n};
}

\draw (A)--(B);
\draw (B)--(C);
\draw (C)--(D);
\draw (A)--(E);

\end{tikzpicture}

要点 2:在单一路径中绘制箭头

您可以使用以下edge操作:

\draw[->] (A) edge (B)
          (B) edge (C)
          (C) edge (D)
          (A) edge (E);

答案2

Bordaigorl 的建议与边缘命令解决了这个问题。我在下面提供了 MWE。对我来说,MWE 编译相同,后者的解决方案更好,重复次数更少

在此处输入图片描述

重复解决方案不好

\begin{tikzpicture}[x=2cm, y=2cm,scale=0.8]
\tikzstyle{every node}=[draw, circle, fill=white, inner sep=3pt,minimum size=18pt] 

\draw (0,0) node[minimum size=1.5cm](Output){Sink};
\draw (0,-3) node[minimum size=1.5cm](Input){Source};

\draw (-1,-1) node(1){1};
\draw (0,-1) node(3){3};
\draw (0.5,-1) node(5){5};
\draw (1.5,-1) node(6){6};
\draw (-1,-2) node(2){2};
\draw (0,-2) node(4){4};
\draw (1,-2) node(7){7};

\draw[->] (1)--(Output);
\draw[->] (3)--(Output);
\draw[->] (5)--(Output);
\draw[->] (6)--(Output);
\draw[->] (2)--(1);
\draw[->] (4)--(3);
\draw[->] (7)--(5);
\draw[->] (7)--(6);
\draw[->] (Input)--(2);
\draw[->] (Input)--(4);
\draw[->] (Input)--(7);

\end{tikzpicture}

更少重复的更好解决方案

\begin{tikzpicture}[x=2cm, y=2cm,scale=0.8]
\tikzstyle{every node}=[draw, circle, fill=white, inner sep=3pt,minimum size=18pt] 

\draw (0,0) node[minimum size=1.5cm](Output){Sink};
\draw (0,-3) node[minimum size=1.5cm](Input){Source};

\draw (-1,-1) node(1){1};
\draw (0,-1) node(3){3};
\draw (0.5,-1) node(5){5};
\draw (1.5,-1) node(6){6};
\draw (-1,-2) node(2){2};
\draw (0,-2) node(4){4};
\draw (1,-2) node(7){7};

\draw[->] (Input) edge (2) 
          (2) edge (1) 
          (1) edge (Output);
\draw[->] (Input) edge (4) 
          (4) edge (3) 
         (3) edge (Output);
\draw[->] (Input) edge (7) 
          (7) edge (5) 
          (5) edge (Output);
\draw[->] (7) edge (6) 
          (6) edge (Output);

\end{tikzpicture}

相关内容