Como adicionar barra de progresso no nó da árvore da floresta?

Como adicionar barra de progresso no nó da árvore da floresta?

Gostaria de adicionar abaixo de alguns nós da minha árvore uma barra de progresso.

Algo assim:

insira a descrição da imagem aqui

Meu código de árvore é o seguinte:

\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}

Considerando que meu código de barras de progresso é o seguinte:

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

Como posso combinar esses dois juntos? Tentei adicionar o código de barras de progresso após cada nó, mas é como se o código não funcionasse no ambiente florestal.

Muito obrigado antecipadamente!

Responder1

Como \progressbarusa o TikZ internamente e aninhar imagens do TikZ é no mínimo irritante, podemos \progressbaresquecer de criar o seu próprio arquivo tikzpicture.

Como a barra é criada assimétrica (o ponto mais à esquerda está emx= 0) vamos colocá-lo dentro de uma matriz que por sua vez pode ser colocada como um nó que nos permite usar a label.

Adicionei uma progressbarchave à floresta que aceita quatro argumentos:

  1. opções para \progressbar,
  2. valor do progresso e
  3. opções para o nó de texto com
  4. seu conteúdo.

Código

\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}

Saída

insira a descrição da imagem aqui

Responder2

Resolvi especificando este código após o nó terminal que desejo que a barra seja:

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

O código completo é o seguinte:

\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}

informação relacionada