¿Cómo agregar una barra de progreso en el nodo del árbol forestal?

¿Cómo agregar una barra de progreso en el nodo del árbol forestal?

Me gustaría agregar debajo de algunos nodos de mi árbol una barra de progreso.

Algo como esto:

ingrese la descripción de la imagen aquí

El código de mi árbol es el siguiente:

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

Mientras que mi código de barras de progreso es el siguiente:

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

¿Cómo puedo combinar estos dos juntos? Intenté agregar el código de barras de progreso después de cada nodo, pero es como si el código no funcionara en el entorno del bosque.

¡Muchas gracias por adelantado!

Respuesta1

Dado que \progressbarutiliza TikZ internamente y anidar imágenes de TikZ es al menos molesto, podemos \progressbarolvidarnos de crear el suyo propio tikzpicture.

Dado que la barra se crea asimétrica (el punto más a la izquierda está enX= 0) lo pondremos dentro de una matriz que a su vez se puede colocar como un nodo que nos permite usar un label.

Agregué una progressbarclave al bosque que acepta cuatro argumentos:

  1. opciones para \progressbar,
  2. valor de progreso y
  3. opciones al nodo de texto con
  4. su contenido.

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}

Producción

ingrese la descripción de la imagen aquí

Respuesta2

Lo resolví especificando este código después del nodo terminal en el que quiero que esté la barra:

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

El código completo es el siguiente:

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

información relacionada