人字形图 (TIKZ) 绘图清单

人字形图 (TIKZ) 绘图清单

我目前正在尝试使用 TIKZ 绘制人字形图列表。结果应如下所示:

首选结果
首选结果

目前,我的代码已经足够好,我使用的是路径。但是,这些路径是水平排列的(见图)。有什么方法可以告诉它们应该垂直列出吗?

我的结果
当前结果

我的代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{chains,shapes.symbols}
\begin{document}
 \begin{figure}
  \begin{tikzpicture}[nodes={shape=signal,signal from=west, signal to=east,
    align=left,font=\sffamily,on chain,minimum height=2em,
    inner xsep=1em},start chain=going right,node distance=1ex]
   \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=magenta]{E} node[fill=magenta]{E} node[fill=red]{D} ;
   \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=magenta]{E} node[fill=red]{D} ;
   \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=red]{D} node[fill=magenta]{E} node[fill=red]{D} ;
   \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=magenta]{E} node[fill=red]{D} node[fill=magenta]{E};
  \end{tikzpicture}
 \end{figure}
\end{document}

我认为解决方案并不难,但是到目前为止我还没有找到设置路径不应在水平方向上附加的方法。

非常感谢大家的回答

答案1

我不知道我是否理解正确了你的问题。但你为什么不把箭放在不同的\tikzpicture环境中呢?

这是您预期的结果吗?:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{chains,shapes.symbols}
\begin{document}
 \begin{figure}
  \begin{tikzpicture}[nodes={shape=signal,signal from=west, signal to=east,
    align=left,font=\sffamily,on chain,minimum height=2em,
    inner xsep=1em},start chain=going right,node distance=1ex]
   \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=magenta]{E} node[fill=magenta]{E} node[fill=red]{D} ;
  \end{tikzpicture}
\begin{tikzpicture}[nodes={shape=signal,signal from=west, signal to=east,
        align=left,font=\sffamily,on chain,minimum height=2em,
        inner xsep=1em},start chain=going right,node distance=1ex]
    \path node[signal from=nowhere]{3 traces\\25.0 \% of the log} node[fill=violet]{A} node[fill=magenta]{E} node[fill=red]{D} node[fill=magenta]{E};
\end{tikzpicture}
 \end{figure}
\end{document}

在此处输入图片描述

答案2

嗯,所有节点都在一条链上going right。A\path不会启动新的链。

但是,该chains库支持分支,因此,我们使用一个下面的链(这之所以有效是因为左侧的所有节点都具有相同的水平尺寸),并且对于每个节点,我们都开始一个向右的分支,将所有其他节点放在该分支上。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{chains,shapes.symbols}
\begin{document}
\begin{tikzpicture}[
  Sig/.style={
    shape = signal, signal from = west, signal to = east,
    minimum height = 2em, inner xsep = 1em, Sig #1/.try},
  Desc/.style={align = left, shape = signal, minimum height = 2em},
  /utils/temp/.style args={#1:#2}{Sig #1/.style={fill={#2}}},
  /utils/temp/.list = {A:violet, D:red, E:magenta},
  start chain = going below,
  node distance = 1ex
]
\sffamily
\foreach \traces/\percent/\List in {
  3/25.0/{A, E, E, D},
  3/25.0/{A, E, D},
  3/25.0/{A, D, E, D},
  3/25.0/{A, E, D, E}}
\node[Desc, on chain] {\traces\ traces \\ \percent\,\% of the log}
  [start branch = branch going right]
  node foreach \t in \List [Sig = \t, on chain] {\t}
;
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容