Hallo, ich habe ein Problem bei der Erstellung eines Baumdiagramms mit tikz. Der Baum ist soweit in Ordnung, aber wenn ich die Pfeile darin beschriften will zB mit: Hier mal der Baum (er soll später insgesamt zehn Level bekommen): Open in writeLaTeX
\documentclass{report} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{pgf} \usepackage{tikz} \usetikzlibrary{arrows,automata,snakes} \begin{document} \begin{figure} \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm, semithick] \tikzstyle{every node}=[fill=white,draw=black,rectangle,text=black] \node {0:0} child{ node{1:0} child{node{2:0}} child{node{1:1}}} child{ node{0:1} child{node {1:1}} child {node{0:2}}} ; \end{tikzpicture} \end{figure} \end{document} Viele Grüße |
Ab pgf/TikZ Version 3.0 kann man Bäume auch als Graphen zeichnen. Der folgende Code muss dann aber mit LuaLaTeX kompiliert werden: Open in writeLaTeX
\documentclass[tikz]{standalone} \usetikzlibrary{graphdrawing, graphs,arrows,quotes,babel} \usegdlibrary{trees} \begin{document} \tikz[>=stealth',shorten >=1pt,nodes={fill=white,draw}] \graph[ tree layout, minimum number of children=2, level distance=2cm, sibling distance=2cm, edge quotes={draw=none,auto} ]{ 0:0->{ 1:0[>"$p_n$" ']->2:0[>"PFAD" ']->3:0->4:0, 0:1[>"Pfad"]->{ 1:1->2:1->3:1, 0:2->{ 1:2->2:2, 0:3->{1:3,0:4} } } }, 1:0->1:1->1:2->1:3, 2:0->2:1->2:2, 3:0->3:1 }; \end{document} Ergebnis: Das lässt sich dann einigermaßen überschaubar auf mehr Ebenen erweitern: Open in writeLaTeX
\documentclass[tikz,margin=10pt]{standalone} \usetikzlibrary{graphdrawing, graphs,arrows,quotes,babel} \usegdlibrary{trees} \begin{document} \tikz[>=stealth',shorten >=1pt,nodes={fill=white,draw}] \graph[ tree layout, minimum number of children=2, level distance=2cm, sibling distance=2cm, edge quotes={draw=none,auto} ]{ 0:0->{ 1:0[>"$p_n$" ']->2:0[>"PFAD" ']->3:0->4:0->5:0->6:0->7:0->8:0->9:0->10:0, 0:1[>"Pfad"]->{ 1:1->2:1->3:1->4:1->5:1->6:1->7:1->8:1->9:1, 0:2->{ 1:2->2:2->3:2->4:2->5:2->6:2->7:2->8:2, 0:3->{ 1:3->2:3->3:3->4:3->5:3->6:3->7:3, 0:4->{ 1:4->2:4->3:4->4:4->5:4->6:4, 0:5->{ 1:5->2:5->3:5->4:5->5:5, 0:6->{ 1:6->2:6->3:6->4:6, 0:7->{ 1:7->2:7->3:7, 0:8->{ 1:8->2:8, 0:9->{ 1:9, 0:10 } } } } } } } } } }, 1:0->1:1->1:2->1:3->1:4->1:5->1:6->1:7->1:8->1:9, 2:0->2:1->2:2->2:3->2:4->2:5->2:6->2:7->2:8, 3:0->3:1->3:2->3:3->3:4->3:5->3:6->3:7, 4:0->4:1->4:2->4:3->4:4->4:5->4:6, 5:0->5:1->5:2->5:3->5:4->5:5, 6:0->6:1->6:2->6:3->6:4, 7:0->7:1->7:2->7:3, 8:0->8:1->8:2, 9:0->9:1 }; \end{document} Ergebnis: beantwortet 17 Aug '14, 01:42 esdd |
Vorschlag mit Zu beachten ist dabei eigentlich nur, dass diese Pfadoperation immer am Ende des Open in writeLaTeX
child{ node{<text>} child{...} ... edge from parent node{<edge node text>} } Code: Open in writeLaTeX
\documentclass{report} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{tikz} \usetikzlibrary{arrows} \begin{document} \begin{figure} \begin{tikzpicture}[ ->,>=stealth',shorten >=1pt, node distance=2.8cm, every node/.style={fill=white,draw},% alle zeichnen und weiß füllen edge from parent/.append style={ % außer edge nodes every node/.append style={draw=none,fill=none} } ] \node[draw] {0:0} child{ node{1:0} child{ node{2:0} edge from parent node[left]{PFAD} } child{node{1:1}} edge from parent node[left] {$p_n$} } child{ node{0:1} child{node {1:1}} child {node{0:2}} edge from parent node[right]{Pfad} } ; \end{tikzpicture} \end{figure} \end{document} beantwortet 16 Aug '14, 22:32 esdd |
Ich würde die nodes benennen und dann zur Beschriftung Pfade setzen: Open in writeLaTeX
\documentclass{report} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{pgf} \usepackage{tikz} \usetikzlibrary{arrows,automata,snakes} \usepackage{lipsum} \pagecolor{lightgray!50!orange} \begin{document} \lipsum[66] \begin{figure}[h] \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm, semithick] \tikzstyle{every node}=[fill=white,draw=black,rectangle,text=black] \node (S) {0:0} child{ node (A) {1:0} child{node (B) {2:0}} child{node (C) {1:1}}} child{ node (D) {0:1} child{node (E) {1:1}} child {node (F) {0:2}}} ; \path (A) -- (B) node[draw=none, midway, left=4pt]{PFAD}; \path (D) -- (S) node[draw=none, midway, right=4pt]{Pfad}; \end{tikzpicture} \end{figure} \lipsum[66] \end{document} beantwortet 16 Aug '14, 20:54 cis Wie kommt's eigentlich, dass Du bei allen Deinen Beispielen
(16 Aug '14, 22:02)
cgnieder
Ja weißer Adler (Bilder) auf weißem Grund ist immer so eine Sache. Ich könnte jetzt ein dezentes Hellgrau nehmen, aber wenn ich schon diese Option bemühen muß, kann ich auch gleich irgendwas Protziges nehmen. Natürlich steht es dem Nutzer frei, diese
(16 Aug '14, 22:14)
cis
Cool danke, so funktionierts gut!
(16 Aug '14, 22:17)
lhop
@lhop ich habe Deine »Antwort« (=Lösung der Frage) mal in einen Kommentar zu @cis Antwort umgewandelt. Die TeXwelt is kein Forum im eigentlichen Sinn und das Antwortfeld sollte Lösungen der Fragen vorbehalten bleiben :)
(16 Aug '14, 22:19)
cgnieder
Ah ok, wird nicht wieder vorkommen ;)
(16 Aug '14, 23:14)
lhop
Ergebnis 5 von 6
show 1 more comments
|