如何在森林樹節點中加入進度條?

如何在森林樹節點中加入進度條?

我想在樹中的一些節點下方新增進度條。

像這樣的事情:

在此輸入影像描述

我的樹程式碼如下:

\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向森林添加了一個接受四個參數的鍵:

  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}

相關內容