
\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{forest}
\usetikzlibrary{shadows}
\begin{document}
\begin{forest}
shade me/.style={%
bottom color=#1!25,
top color=#1!5,
draw=#1,
drop shadow,
font=\Huge,
},
my label/.style n args=2{%
edge label={node [midway, black, font=\sffamily\large, #1] {#2}}
},
where n children=0{%
shade me=green!95!gray,
}{%
if level=0{%
shade me=green!95!gray,
}{%
shade me=green!95!gray,
}
},
for tree={%
delay={content/.wrap value={\strut #1}},
edge={red,->},
l sep+=45pt,
s sep+=60pt
}
[100000 individuals
[100 affected, my label={above, xshift=1cm}{}
[{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}
Antwort1
Beachten Sie, dass ich Ihr MWE auf verschiedene Weise ändern musste, um es fragebereit zu machen, bevor ich mit der Arbeit an einer Lösung beginnen konnte.
Wenn eine Frage von Natur aus eine bestimmte Klasse betrifft, muss ein geeignetes MWE diese Klasse verwenden. Die erste offensichtlich erforderliche Änderung in diesem Fall istverwenden
beamer
. Andernfalls hat es keinen Sinn, inkrementelles Aufdecken zu implementieren. (Vielleicht könnten Sie mit derbeamer
Option von spielenstandalone
, aber Ihr MWE hat diese nicht verwendet.)Die zweite offensichtlich notwendige Änderung besteht darin, dass Sie, bevor Sie überhauptdenkenüber ausgefallene Overlay-Spezifikationen, müssen Sie die Baumspezifikation überarbeiten, da sie für eine Beamer-Folie in ihrer jetzigen Form ziemlich ungeeignet ist. Es ist einfachriesig.
Ein Großteil des Codes für den Baum wird überhaupt nicht verwendet und kann einfach aus dem Beispiel entfernt werden. Keine Kantenbeschriftungen sind für diesen Zweck genauso gut – vielleicht sogar besser – wie leere.
Nachdem das erledigt ist, folgt hier eine Lösung auf Grundlage der von mir verwendeten Methode, deren Verdienst den verschiedenen im Code genannten Autoren, insbesondere Qrrbrbirlbel, zu großem Dank verpflichtet ist.
\begin{filecontents}{mytree.tex}
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\usetikzlibrary{shadows}
\begin{document}
\begin{forest}
shade me/.style={%
bottom color=#1!25,
top color=#1!5,
draw=#1,
},
where n children=0{%
shade me=green!95!gray,
}{%
if level=0{%
shade me=green!95!gray,
}{%
shade me=green!95!gray,
}
},
for tree={%
delay={content/.wrap value={\strut #1}},
edge={red,->},
l sep+=20pt,
s sep+=20pt,
from slide/.wrap pgfmath arg={#1}{int(level()+1)},
},
delay={%
for tree={%
visible on=<\forestoption{from slide}->,
alt=<\forestoption{from slide}->{drop shadow}{},
}
}
[100000 individuals
[100 affected
[{95\% true positives}
[,phantom
]
[{95 + 999 test positive, Total = 1094}, name=aux1
]
]
]
[99900 unaffected
[{1\% false positives}, tikz+={\scoped[visible on=<4>]{\draw [red, ->] () -- (aux1);}}
]
]
]
\end{forest}
\end{document}
\end{filecontents}
\documentclass{beamer}
\usepackage{forest,standalone}
\usetikzlibrary{shadows}
\tikzset{% set up for transitions using tikz with beamer overlays - developed by Daniel (http://tex.stackexchange.com/a/55849/) and, in ear lier form, by Matthew Leingang (http://tex.stackexchange.com/a/6155/) and modified for this use, I think by Qrrbrbirlbel (http://tex.stacke xchange.com/a/112471/)
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
}
\forestset{%
visible on/.style={% developed by Qrrbrbirlbel (http://tex.stackexchange.com/a/112471/)
for tree={%
/tikz/visible on={#1},
edge={/tikz/visible on={#1}}}},
% based on Qrrbrbirlbel's answer at http://tex.stackexchange.com/a/112895/
declare toks={from slide}{1},
}
\begin{document}
\begin{frame}
\centering
\input{mytree}
\end{frame}
\end{document}