Estou trabalhando em um artigo em LaTeX e tentando inserir um diagrama de árvore de decisão simples usando TikZ. Porém, não sou bom com TikZ e estou tendo dois pequenos problemas com minha árvore.
Esta é minha árvore agora e estou tendo problemas com ela de duas maneiras:
- Eu gostaria de me livrar da linha horizontal extra antes do R = 0 superior.
- Gostaria que os nós estivessem dentro de círculos.
Novamente, não sou bom com o TikZ e não consigo fazê-lo funcionar. Meu código está abaixo.
{
% Set the overall layout of the tree
\tikzstyle{level 1}=[level distance=3.5cm, sibling distance=3.5cm]
\tikzstyle{level 2}=[level distance=3.5cm, sibling distance=2cm]
% Define styles for bags and leafs
\tikzstyle{bag} = [text width=4em, text centered]
\tikzstyle{end} = [circle, minimum width=3pt,fill, inner sep=0pt]
%TODO: fix top node
\begin{figure}[h]
\centering
\begin{tikzpicture}[grow=right, sloped, scale=0.8]
\node[bag] {$L$}
child {
node[bag] {$D$}
child {
node[bag] {$P$}
child {
node[bag] {$C$}
child {
node[end, label=right:
{$\mathbf{R=1}$}] {}
edge from parent
%node[above] {$E$}
node[below] {$C=0$}
}
child {
node[end, label=right:
{$\mathbf{R=0}$}] {}
edge from parent
%node[above] {$E$}
node[below] {$C=1$}
}
edge from parent
%node[above] {$E$}
node[below] {$P=0$}
}
child {
node[end, label=right:
{$\mathbf{R=0}$}] {}
edge from parent
%node[above] {$E$}
node[below] {$P=1$}
}
edge from parent
%node[above] {$W$}
node[below] {$D=0$}
}
child {
node[end, label=right:
{$\mathbf{R=0}$}] {}
edge from parent
%node[above] {$E$}
node[below] {$D=1$}
}
edge from parent
%node[above] {$W$}
node[below] {$L=0$}
}
child {
child {
node[end, label=right:
{$\mathbf{R=0}$}] {}
edge from parent
%node[above] {$E$}
%node[below] {$C=0$}
}
edge from parent
%node[above] {$B$}
node[below] {$L=1$}
};
\end{tikzpicture}
\end{figure}
}
Se alguém que seja melhor no TikZ do que eu pudesse me ajudar com isso, ficaria muito grato.
Responder1
Eu descobri, com a ajuda dehttps://tex.stackexchange.com/a/240766/77231.
Aqui está minha nova foto:
E meu novo código:
\documentclass[tikz]{standalone}
\usepackage{forest}
\begin{document}
\tikzset{
decision/.style={circle, minimum height=10pt, minimum width=10pt, draw=black, fill=none, thick, inner sep=0pt},
chance/.style={circle, minimum width=10pt, draw=black, fill=none, thick, inner sep=0pt},
}
\begin{forest}
my label/.style={
edge label={node[auto,sloped,pos=.75,anchor=south]{#1}}
},
for tree={
grow=0,
child anchor=west,
anchor=west,
text ragged,
inner sep=1mm,
edge={thick, draw=black},
l sep+=15mm,
s sep+=15mm,
if n children=0{
before typesetting nodes={
label/.wrap pgfmath arg={right:#1}{content()},
content={},
chance,
},
}{},
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) |- (.child anchor)\forestoption{edge label};
}
}
[, decision
[, chance, my label={$L=0$}
[, chance, my label={$D=0$}
[, chance, my label={$P=0$}
[{$\mathbf{R=1}$}, my label={$C=0$}
]
[{$\mathbf{R=0}$}, my label={$C=1$}
]
]
[{$\mathbf{R=0}$}, my label={$P=1$}
]
]
[{$\mathbf{R=0}$}, my label={$D=1$}
]
]
[{$\mathbf{R=0}$}, my label={$L=1$}
]
]
\end{forest}
\end{document}
Acho que isso é muito mais limpo e melhor. Obrigado novamente pela resposta do cfr ahttps://tex.stackexchange.com/a/240766/77231!