Seite 1 von 1

TikZ Entscheidungsbaum Kantenbeschriftung

Verfasst: Mi 26. Sep 2012, 17:53
von Deborah
Hallo,
ich möchte mit TikZ einen Entscheidungsbaum darstellen.
Nun habe ich gelesen, dass man Kantenbeschriftungen mit "edge from parent node{...}" machen soll. Das funktioniert aber nur in der unteren Ebene des Baumes. Weiter oben wird der Teilbaum an die Kantenbeschriftung geheftet.
Weiß jemand, wie man die Klammern richtig setzen muss oder gibt es eine bessere Möglichkeit?

Hier ein Ausschnitt aus meinem Baum:
So funktioniert es:
\documentclass{article} 
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  [every node/.style={fill=black!10,rounded corners,align=center}, 
    grow=south, level distance=2cm, 
    level 1/.style={sibling distance=9cm}, 
    level 2/.style={sibling distance=5cm}, 
   ] 


\node{B49-B57} 
		child{ node{B82-B84}
				child{node {4}edge from parent node{...}}
				child{node {5}edge from parent node{...}}
										}
		child{node{5} edge from parent node{...}}
					
\end{tikzpicture}
\end{document}
Und so nicht mehr:
\documentclass{article} 
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  [every node/.style={fill=black!10,rounded corners,align=center}, 
    grow=south, level distance=2cm, 
    level 1/.style={sibling distance=9cm}, 
    level 2/.style={sibling distance=5cm}, 
   ] 

\node{B49-B57} 
		child{ node{B82-B84} edge from parent node{...}
				child{node {4}edge from parent node{...}}
				child{node {5}edge from parent node{...}}
										}
		child{node{5} edge from parent node{...}}
							
\end{tikzpicture}
\end{document}
Vielen Dank im Voraus!

Verfasst: Mi 26. Sep 2012, 21:00
von esdd
Hallo,

das edge from parent muss vor die schließende Klammer des zugehörigen childs, also hinter dessen ganze children.
\documentclass{scrartcl}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
[every node/.style={fill=black!10,rounded corners,align=center},
grow=south, level distance=2cm,
level 1/.style={sibling distance=9cm},
level 2/.style={sibling distance=5cm},
]

\node{B49-B57}
    child{node{B82-B84}
         child{node {4}edge from parent node{...}}
         child{node {5}edge from parent node{...}}
    edge from parent node[draw=red]{...}}%hier muss es hin
%
    child{node{5} edge from parent node{...}};

\end{tikzpicture}
\end{document}
Gruß
Elke

Verfasst: Do 27. Sep 2012, 10:42
von Deborah
Super, es klappt. Ist ja ganz einfach :)

Vielen Dank, Elke!

Verfasst: Do 27. Sep 2012, 11:06
von Deborah
Es ist doch noch nicht ganz richtig.
Das zweite child
child{node{5} edge from parent node{...}}
taucht ja jetzt nicht mehr auf und die nodes überlagern sich.

Verfasst: Do 27. Sep 2012, 12:53
von esdd
Hallo,

bei mir liefert unten stehender Code das angehangene pdf
\documentclass{scrartcl}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
[every node/.style={fill=black!10,rounded corners,align=center}, 
  grow=south, level distance=2cm, 
  level 1/.style={sibling distance=9cm}, 
  level 2/.style={sibling distance=5cm}, 
]

\node{B49-B57}
   child{node{B82-B84}
        child{node {4}edge from parent node{...}}
        child{node {5}edge from parent node{...}}
   edge from parent node[draw=red]{...}}
% es dürfen keine Leerzeilen dazwischen sein
   child{node{5} edge from parent node[draw=green]{...}}; 
\end{tikzpicture}
\end{document}
Hast du eventuell zwischen den childs eine Leerzeile drin?
Gruß
Elke

Verfasst: Do 27. Sep 2012, 15:40
von Deborah
Stimmt, eine Leerzeile ist der Grund.
Nochmals vielen Dank! :D