如何使用虚线在树中建立连接?

如何使用虚线在树中建立连接?

请参考如何绘制工艺流程图?

现在我想将“and->path1”的线改为虚线,我添加了[样式=虚线],不幸的是它没有改变,为什么?

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{trees}

\tikzset{level 1/.style={level distance=1.5cm, sibling distance=3.5cm}}
\tikzset{level 2/.style={level distance=1.5cm, sibling distance=2cm}}

\tikzset{bag/.style={text width=20em, text centered,yshift=-0.2cm}}

\begin{document}
\begin{tikzpicture}[grow=down, -stealth]
\node[bag]{$(B)$} 
    child{ edge from parent node[right]{t}; \node[bag]{$(Rgood)$}
            child{ edge from parent node[right]{and}; \node[bag]{$(and)$}
                    child[missing]
                    child{ edge from parent node[right=0.1cm][style =dashed]{it}; \node[bag]{$(path1)$}}
                    child{ edge from parent node[right=0.1cm]{else}; \node[bag]{$(path2)$}}
            }
    };
\end{tikzpicture}

\end{document}

答案1

可以局部定义一个在关键字附近引入选项的样式child

因此,示例应变为:

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{trees}

\tikzset{level 1/.style={level distance=1.5cm, sibling distance=3.5cm}}
\tikzset{level 2/.style={level distance=1.5cm, sibling distance=2cm}}

\tikzset{bag/.style={text width=20em, text centered,yshift=-0.2cm}}

\begin{document}
\begin{tikzpicture}[grow=down, -stealth]
\node[bag]{$(B)$} 
  child{ edge from parent node[right]{t}; \node[bag]{$(Rgood)$}
    child{ edge from parent node[right]{and}; \node[bag]{$(and)$}
       child[missing]
       child[dashed]{ edge from parent node[right=0.1cm]{it}; \node[bag]{$(path1)$}}  % <= NOTICE the dashed near child
       child{ edge from parent node[right=0.1cm]{else}; \node[bag]{$(path2)$}}
    }
  };
\end{tikzpicture}
\end{document}

结果是:

在此处输入图片描述


为了完整起见,让我们看看改变选项的位置会发生什么。

在前面的例子中,假设每次只需更改以下行:

child[dashed]{ edge from parent node[right=0.1cm]{it}; \node[bag]{$(path1)$}}

1.在选项里插入颜色定义node

child[dashed]{ edge from parent node[right=0.1cm,red]{it}; \node[bag]{$(path1)$}}

结果是:

在此处输入图片描述

2.现在让我们通过将颜色定义作为选项插入来改变颜色定义edge from parent

child[dashed]{ edge from parent[red] node[right=0.1cm]{it}; \node[bag]{$(path1)$}}

得出:

在此处输入图片描述

虽然看起来与之前的结果相同,但实际上连接首先用红色绘制,然后样式被子定义用黑色覆盖。标签仍为黑色。

3.现在让我们通过将颜色定义作为选项插入来改变颜色定义child

child[dashed,red]{ edge from parent node[right=0.1cm]{it}; \node[bag]{$(path1)$}}

得出:

在此处输入图片描述

一旦将选项置于此位置,它将适用于所有元素。

编辑

下次请在问题中插入您的真正需求,而不是稍后在评论中询问。事实上,我开发了之前的代码来回答:

现在我想将“and->path1”这一行改为虚线,我添加了[style=dashed],但不幸的是它没有改变,为什么?

不是:

那么有没有办法让 "(Rgood)->(and)" 之间的线变成虚线,而 "(and)->path1" 之间的线保持不变,也就是说不是虚线呢?

解决方法如下:

\documentclass[a4paper,12pt]{article}
\usepackage[width=15cm]{geometry}
\usepackage{pgfplots}
\usetikzlibrary{trees}

\tikzset{level 1/.style={level distance=1.5cm, sibling distance=3.5cm}}
\tikzset{level 2/.style={level distance=1.5cm, sibling distance=2cm}}

\tikzset{bag/.style={text width=20em, text centered,yshift=-0.2cm}}

\begin{document}
\scalebox{1.5}{
\begin{tikzpicture}[grow=down, -stealth,dashed]
\node[bag]{$(B)$} 
    child{ edge from parent[solid] node[right]{t}; \node[bag]{$(Rgood)$}
            child{ edge from parent node[right]{and}; \node[bag]{$(and)$}
                    child[missing]
                    child{ edge from parent[solid] node[right=0.1cm]{it}; \node[bag]{$(path1)$}}
                    child{ edge from parent[solid] node[right=0.1cm]{else}; \node[bag]{$(path2)$}}
            }
    };
\end{tikzpicture}
}

\end{document}

相关内容