Gostaria de adicionar abaixo de alguns nós da minha árvore uma barra de progresso.
Algo assim:
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 \progressbar
usa o TikZ internamente e aninhar imagens do TikZ é no mínimo irritante, podemos \progressbar
esquecer 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 progressbar
chave à floresta que aceita quatro argumentos:
- opções para
\progressbar
, - valor do progresso e
- opções para o nó de texto com
- 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
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}