如何修改森林樹?

如何修改森林樹?

%我需要獲得兩個上層之間共享的最後一層。我該如何編碼?

\documentclass[tikz,border=10pt]{standalone}  
\usepackage{forest}  
\usetikzlibrary{shadows}  
\begin{document}  
\begin{forest}  
  shade me/.style={%  
    bottom color=#1!25,  
    top color=#1!5,  
    draw=#1,  
    drop shadow,  
    font=\large,  
  },  
  my label/.style n args=2{%  
    edge label={node [midway, black, font=\sffamily\large, #1] {#2}}  
  },  
  where n children=0{%  
    shade me=blue!50!cyan,  
  }{%  
    if level=0{%  
      shade me=green!75!gray,  
    }{%  
      shade me=blue!75!magenta,  
    }  
  },  
  for tree={%  
    delay={content/.wrap value={\strut #1}},  
    edge={red,->},  
    l sep+=25pt,  
    s sep+=20pt  
  }  
  [100000 individuals  
  [100 affected, my label={above, xshift=1cm}{}  
      %[No, my label={above, sloped}{$< 30$}]  
      [{95\% true positives}, my label={below, xshift=-1.7cm}{}  
    [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}]]]  
    [99900 unaffected, my label={above, sloped}{}  
      [{1\% false positives}, my label={below, xshift=1.5cm}{}  
  [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}]]]        ]  
    ]  
  ]  
\end{forest}  
\end{document}  

答案1

孩子phantom可以幫助將節點居中。

\documentclass[tikz,border=10pt]{standalone}  
\usepackage{forest}  
\usetikzlibrary{shadows}  
\begin{document}  
\begin{forest}  
  shade me/.style={%  
    bottom color=#1!25,  
    top color=#1!5,  
    draw=#1,  
    drop shadow,  
    font=\large,  
  },  
  my label/.style n args=2{%  
    edge label={node [midway, black, font=\sffamily\large, #1] {#2}}  
  },  
  where n children=0{%  
    shade me=blue!50!cyan,  
  }{%  
    if level=0{%  
      shade me=green!75!gray,  
    }{%  
      shade me=blue!75!magenta,  
    }  
  },  
  for tree={%  
    delay={content/.wrap value={\strut #1}},  
    edge={red,->},  
    l sep+=25pt,  
    s sep+=20pt  
  }  
  [100000 individuals  
  [100 affected, my label={above, xshift=1cm}{}  
      %[No, my label={above, sloped}{$< 30$}]  
      [{95\% true positives}, my label={below, xshift=-1.7cm}{}  
    [,phantom] [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}, name=aux1]]]  
    [99900 unaffected, my label={above, sloped}{}  
      [{1\% false positives}, my label={below, xshift=1.5cm}{}, name=aux  
 % [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}]
 ]]        ]  
    ]  
  ]  
  \draw[red, ->] (aux)--(aux1);
\end{forest}  
\end{document}  

在此輸入影像描述

答案2

到目前為止,我已經做到了這一點(見下文),但我沒有設法將最後一個級別居中:

\documentclass[tikz,border=10pt]{standalone}  
\usepackage{forest}  
\usetikzlibrary{shadows, positioning}
\begin{document}  
\begin{forest}  
  shade me/.style={%  
    bottom color=#1!25,  
    top color=#1!5,  
    draw=#1,  
    drop shadow,  
    font=\large,  
  },  
  my label/.style n args=2{%  
    edge label={node [midway, black, font=\sffamily\large, #1] {#2}}  
  },  
  where n children=0{%  
    shade me=blue!50!cyan,  
  }{%  
    if level=0{%  
      shade me=green!75!gray,  
    }{%  
      shade me=blue!75!magenta,  
    }  
  },  
  for tree={%  
    delay={content/.wrap value={\strut #1}},  
    edge={red,->},  
    l sep+=25pt,  
    s sep+=20pt  
  }  
  [100000 individuals, name=init,
  [100 affected, my label={above, xshift=1cm}{}  
  % [No, my label={above, sloped}{$< 30$}]  
  [{95\% true positives}, my label={below, xshift=-1.7cm}{}  
  [{95 + 999 test positive Total = 1094}, name=end, below=(1cm of init), my label={above, sloped}{}]]]
  [99900 unaffected, my label={above, sloped}{}  
  [{1\% false positives}, name=start,my label={below, xshift=1.5cm}{} 
  % [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}]]]
  ]  
  ]
  ]
  \draw[->, red](start) -- (end);
\end{forest}  
\end{document} 

在此輸入影像描述

相關內容