Я работаю над статьей в LaTeX и пытаюсь вставить простую диаграмму дерева решений с помощью TikZ. Однако я не очень хорош в TikZ, и у меня есть две небольшие проблемы с моим деревом.
Сейчас это мое дерево, и у меня с ним возникли две проблемы:
- Я хотел бы избавиться от лишней горизонтальной линии перед верхней точкой R=0.
- Мне бы хотелось, чтобы узлы находились внутри кругов.
Опять же, я не силен в TikZ и не могу заставить его работать. Мой код ниже.
{
% 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}
}
Если бы кто-то, кто разбирается в TikZ лучше меня, мог мне в этом помочь, я был бы очень признателен.
решение1
Я понял это с помощьюhttps://tex.stackexchange.com/a/240766/77231.
Вот моя новая фотография:
И мой новый код:
\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}
Я думаю, что это намного аккуратнее и лучше. Спасибо еще раз за ответ cfr наhttps://tex.stackexchange.com/a/240766/77231!