如何在森林树节点添加进度条?

如何在森林树节点添加进度条?

我想在我的树中的一些节点下面添加一个进度条。

像这样:

在此处输入图片描述

我的树代码如下:

\package{forest}
\begin{document}
\begin{forest}
for tree={calign=fixed edge angles},
[Asp \textsubscript{Habitual} [solere\\]
[Asp \textsubscript{Predispositional}
[tendere]
[Asp \textsubscript{Repetetive \textsubscript{i}} [tornare]
[Mod \textsubscript{Volition}
[volere][,phantom]
]]]]
\end{forest}
\end{document}

而我的进度条代码如下:

\package{progressbar}
\begin{document}
\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}} 
\end{document}

我怎样才能将这两者结合在一起?我尝试在每个节点后添加进度条代码,但好像代码在森林环境中不起作用。

提前谢谢您!

答案1

由于\progressbar内部使用 TikZ 并且嵌套 TikZ 图片至少很烦人,我们可以\progressbar忘记创建自己的tikzpicture

由于条形图是不对称的(最左边的点位于X=0) 我们将它放在一个矩阵里面,而这个矩阵又可以像节点一样放置,这允许我们使用label

progressbar我向 forest添加了接受四个参数的键:

  1. 选择\progressbar
  2. 进度值和
  3. 文本节点的选项
  4. 其内容。

代码

\documentclass[tikz]{standalone}
\usepackage{forest, progressbar}
\forestset{
  progressbar/.style n args={4}{
    label={[matrix, inner sep=+0pt]below:%
      \let\tikzpicture\scope
      \let\endtikzpicture\endscope
      \progressbar[{#1}]{#2}
      \path (Begin) -- node[{midway,anchor=center,node font=\tiny,#3}] {#4\,\%} (End);
      \expandafter\pgfmatrixendrow}}}
\progressbarchange{linecolor=black, filledcolor=green}
\begin{document}
\begin{forest} for tree={calign=fixed edge angles}
[Asp \textsubscript{Habitual}
  [solere, progressbar={}{.6}{}{60}]
  [Asp \textsubscript{Predispositional}
    [tendere, progressbar={filledcolor=yellow}{.3}{}{30}]
    [Asp \textsubscript{Repetetive \textsubscript{i}}
      [tornare]
      [Mod \textsubscript{Volition}
        [volere, progressbar={filledcolor=blue, width=1cm}{.85}{white}{85}]
        [,phantom]
      ]
    ]
  ]
]
\end{forest}
\end{document}

输出

在此处输入图片描述

答案2

我通过在我想要的栏目终端节点之后指定此代码来解决它:

[volere, tikz={\node[below=-2.5pt of .south]  
{\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}}};}]

完整代码如下:

\usepackage{tikz}
\usepackage{forest}
\begin{document}
\begin{forest}
 for tree={calign=fixed edge angles},
 [Asp \textsubscript{Habitual} [solere]
 [Asp \textsubscript{Predispositional}
 [tendere]
 [Asp \textsubscript{Repetetive \textsubscript{i}} [tornare]
 [Mod \textsubscript{Volition}
 [volere, tikz={\node[below=-2.5pt of .south]  { \progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt}{\tiny$60\%$}\hspace{0.8cm}}};}][,phantom]
 ]]]]
\end{forest}
\end{document}

相关内容