Decision tree nodes overlapping with Tikz
Does anyone know how to prevent the branches of a decision tree from converging on each other? This is with Tikz - I've tried tweaking the sibling distance and things like that, but two of the branches at the end converge so that the final values are illegible.
Secondly, does anyone know how to put in a dashed line between the two square "choice" siblings? To indicate an information set.
documentclass{article}
usepackage{tikz}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{figure}[H]
centering
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] {}
child {node [outcome, label=right:{$10}]{}}
child {node[outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice]{}
child {node [outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
end{tikzpicture}
caption{Sample Decision Tree} label{fig: Sample}
end{figure}
tikz-pgf tikz-trees trees
New contributor
add a comment |
Does anyone know how to prevent the branches of a decision tree from converging on each other? This is with Tikz - I've tried tweaking the sibling distance and things like that, but two of the branches at the end converge so that the final values are illegible.
Secondly, does anyone know how to put in a dashed line between the two square "choice" siblings? To indicate an information set.
documentclass{article}
usepackage{tikz}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{figure}[H]
centering
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] {}
child {node [outcome, label=right:{$10}]{}}
child {node[outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice]{}
child {node [outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
end{tikzpicture}
caption{Sample Decision Tree} label{fig: Sample}
end{figure}
tikz-pgf tikz-trees trees
New contributor
add a comment |
Does anyone know how to prevent the branches of a decision tree from converging on each other? This is with Tikz - I've tried tweaking the sibling distance and things like that, but two of the branches at the end converge so that the final values are illegible.
Secondly, does anyone know how to put in a dashed line between the two square "choice" siblings? To indicate an information set.
documentclass{article}
usepackage{tikz}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{figure}[H]
centering
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] {}
child {node [outcome, label=right:{$10}]{}}
child {node[outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice]{}
child {node [outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
end{tikzpicture}
caption{Sample Decision Tree} label{fig: Sample}
end{figure}
tikz-pgf tikz-trees trees
New contributor
Does anyone know how to prevent the branches of a decision tree from converging on each other? This is with Tikz - I've tried tweaking the sibling distance and things like that, but two of the branches at the end converge so that the final values are illegible.
Secondly, does anyone know how to put in a dashed line between the two square "choice" siblings? To indicate an information set.
documentclass{article}
usepackage{tikz}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{figure}[H]
centering
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] {}
child {node [outcome, label=right:{$10}]{}}
child {node[outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice]{}
child {node [outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
end{tikzpicture}
caption{Sample Decision Tree} label{fig: Sample}
end{figure}
tikz-pgf tikz-trees trees
tikz-pgf tikz-trees trees
New contributor
New contributor
New contributor
asked Apr 5 at 15:06
user185143user185143
332
332
New contributor
New contributor
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
I use yshift
option to change the position of the nodes, to avoid overlapping.
I give two choice
nodes some names (a
and b
) and draw a dashed line as usual.
Code:
documentclass[tikz]{standalone}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] (a) {}
child {node [outcome, label=right:{$10}]{}}
child {node[yshift=-2em,outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice] (b) {}
child {node [yshift=2em,outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
draw[dashed] (a)--(b);
end{tikzpicture}
end{document}
add a comment |
I would like to recommend forest, where the syntax is simpler and you do not have to worry about these things.
documentclass{article}
usepackage[edges]{forest}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{forest}
for tree={grow'=east,edge={-latex},l+=1cm}
[,root
[,choice
[$25]
[,chance
[,choice,edge label={node[midway,above,sloped]{.5}}
[$55]
[$45]
]
[,choice,edge label={node[midway,below,sloped]{.5}}
[$100]
[$10]
]
]
]
[$30]
]
end{forest}
end{document}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
user185143 is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483367%2fdecision-tree-nodes-overlapping-with-tikz%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I use yshift
option to change the position of the nodes, to avoid overlapping.
I give two choice
nodes some names (a
and b
) and draw a dashed line as usual.
Code:
documentclass[tikz]{standalone}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] (a) {}
child {node [outcome, label=right:{$10}]{}}
child {node[yshift=-2em,outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice] (b) {}
child {node [yshift=2em,outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
draw[dashed] (a)--(b);
end{tikzpicture}
end{document}
add a comment |
I use yshift
option to change the position of the nodes, to avoid overlapping.
I give two choice
nodes some names (a
and b
) and draw a dashed line as usual.
Code:
documentclass[tikz]{standalone}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] (a) {}
child {node [outcome, label=right:{$10}]{}}
child {node[yshift=-2em,outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice] (b) {}
child {node [yshift=2em,outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
draw[dashed] (a)--(b);
end{tikzpicture}
end{document}
add a comment |
I use yshift
option to change the position of the nodes, to avoid overlapping.
I give two choice
nodes some names (a
and b
) and draw a dashed line as usual.
Code:
documentclass[tikz]{standalone}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] (a) {}
child {node [outcome, label=right:{$10}]{}}
child {node[yshift=-2em,outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice] (b) {}
child {node [yshift=2em,outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
draw[dashed] (a)--(b);
end{tikzpicture}
end{document}
I use yshift
option to change the position of the nodes, to avoid overlapping.
I give two choice
nodes some names (a
and b
) and draw a dashed line as usual.
Code:
documentclass[tikz]{standalone}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black, font=normalsize},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black, font=normalsize},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{tikzpicture}
[
grow = right,
sibling distance = 6em,
level distance = 8em,
edge from parent/.style = {draw, -latex},
every node/.style = {font=normalsize},
sloped
]
node [root] {}
child {node [outcome, label=right:{$30}] {}
edge from parent node [below] {}}
child {node [choice] {}
child {node [chance] {}
child {node [choice] (a) {}
child {node [outcome, label=right:{$10}]{}}
child {node[yshift=-2em,outcome, label=right:{$100}]{}}
edge from parent node [below] {.5}}
child {node [choice] (b) {}
child {node [yshift=2em,outcome, label=right:{$45}]{}}
child {node [outcome, label=right:{$55}]{}}
edge from parent node [above] {.5}}
edge from parent node [below] {}}
child {node [outcome, label=right:{$25}]{}
edge from parent node [above] {}}
edge from parent node [above] {}};
draw[dashed] (a)--(b);
end{tikzpicture}
end{document}
answered Apr 5 at 15:11
JouleVJouleV
11.7k22561
11.7k22561
add a comment |
add a comment |
I would like to recommend forest, where the syntax is simpler and you do not have to worry about these things.
documentclass{article}
usepackage[edges]{forest}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{forest}
for tree={grow'=east,edge={-latex},l+=1cm}
[,root
[,choice
[$25]
[,chance
[,choice,edge label={node[midway,above,sloped]{.5}}
[$55]
[$45]
]
[,choice,edge label={node[midway,below,sloped]{.5}}
[$100]
[$10]
]
]
]
[$30]
]
end{forest}
end{document}
add a comment |
I would like to recommend forest, where the syntax is simpler and you do not have to worry about these things.
documentclass{article}
usepackage[edges]{forest}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{forest}
for tree={grow'=east,edge={-latex},l+=1cm}
[,root
[,choice
[$25]
[,chance
[,choice,edge label={node[midway,above,sloped]{.5}}
[$55]
[$45]
]
[,choice,edge label={node[midway,below,sloped]{.5}}
[$100]
[$10]
]
]
]
[$30]
]
end{forest}
end{document}
add a comment |
I would like to recommend forest, where the syntax is simpler and you do not have to worry about these things.
documentclass{article}
usepackage[edges]{forest}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{forest}
for tree={grow'=east,edge={-latex},l+=1cm}
[,root
[,choice
[$25]
[,chance
[,choice,edge label={node[midway,above,sloped]{.5}}
[$55]
[$45]
]
[,choice,edge label={node[midway,below,sloped]{.5}}
[$100]
[$10]
]
]
]
[$30]
]
end{forest}
end{document}
I would like to recommend forest, where the syntax is simpler and you do not have to worry about these things.
documentclass{article}
usepackage[edges]{forest}
tikzset{
choice/.style = {shape=rectangle, draw, align=center, color=black, fill=black},
chance/.style = {shape=circle, draw, align=center, color=black, fill=black},
root/.style = {choice, font=normalsize, color=black},
outcome/.style = {shape=rectangle, draw=white, align=center, font=tiny, parent anchor=left},
}
begin{document}
begin{forest}
for tree={grow'=east,edge={-latex},l+=1cm}
[,root
[,choice
[$25]
[,chance
[,choice,edge label={node[midway,above,sloped]{.5}}
[$55]
[$45]
]
[,choice,edge label={node[midway,below,sloped]{.5}}
[$100]
[$10]
]
]
]
[$30]
]
end{forest}
end{document}
answered Apr 5 at 15:22
marmotmarmot
116k5147277
116k5147277
add a comment |
add a comment |
user185143 is a new contributor. Be nice, and check out our Code of Conduct.
user185143 is a new contributor. Be nice, and check out our Code of Conduct.
user185143 is a new contributor. Be nice, and check out our Code of Conduct.
user185143 is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483367%2fdecision-tree-nodes-overlapping-with-tikz%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown