TikZ Entscheidungsbaum Kantenbeschriftung

Tabellen und Grafiken erstellen und anordnen


Deborah

TikZ Entscheidungsbaum Kantenbeschriftung

Beitrag 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!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

Deborah

Beitrag von Deborah »

Super, es klappt. Ist ja ganz einfach :)

Vielen Dank, Elke!

Deborah

Beitrag 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.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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
Dateianhänge
Kantenbeschriftung.pdf
(13.52 KiB) 620-mal heruntergeladen

Deborah
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Do 27. Sep 2012, 11:13
Wohnort: Leipzig

Beitrag von Deborah »

Stimmt, eine Leerzeile ist der Grund.
Nochmals vielen Dank! :D

Antworten