Archiv verlassen und diese Seite im Standarddesign anzeigen : Baumdiagramm Linguistik
Hallo liebes Forum,
ich grüble momentan an einem 'einfachen' Baumdiagramm, das aber bis jetzt immer noch nicht so aussieht wie es soll. Ich habe verschiedene Dokumentationen durchforstet und die Suchfunktion benutzt. Das Problem besteht weiterhin.
Die Grafik zeigt das Diagramm, wie es einmal aussehen soll. Die PDF Datei, wie es aussieht.
1. Problem, der linke und rechte 'Arm' des Baumes soll von der Diagrammwurzel direkt ganz nach unten laufen ohne unterbrochen zu werden.
2. Die Knoten in der Mitte sollen jeweils auch Arme aufweisen, die wie in 1. beschrieben bis unten durchlaufen.
Ich würde mich sehr freuen, wenn mir jemand helfen könnte.
Liebe Grüße :)
Hier sind mal 3 Lösungsvorschläge:
\documentclass[parskip=half]{scrartcl}
\usepackage{tikz-qtree,tikz-qtree-compat}
\begin{document}
\begin{tikzpicture}[level 3/.style={sibling distance=2cm},level distance=12mm]
\node(Xn){X\textsuperscript{n}}
child {node{X\textsuperscript{n-1}}
child {node(dots){$\ldots$}
child {node(dots1){$\ldots$}edge from parent[draw=none]}
child {node{X\textsuperscript{0}}}
child {node(dots2){$\ldots$}edge from parent[draw=none]}
}
}
;
\path (Xn)edge(dots1)edge(dots2);
\end{tikzpicture}
\begin{tikzpicture}[level 3/.style={sibling distance=2cm},level distance=12mm]
\Tree [.\node(Xn){X^{n}};
[.X^{n-1}
[. $\ldots$
\edge[draw=none];\node(dots1){ $\ldots$ };
X^{0}
\edge[draw=none];\node(dots2){ $\ldots$ };
]
]
]
\path (Xn)edge(dots1)edge(dots2);
\end{tikzpicture}
\tikzset{level distance=12mm,frontier/.style={distance from root=36mm},sibling distance=2cm}
\Tree [.X^{n}
$\ldots$
[.X^{n-1}
[. $\ldots$ X^{0} ]
]
\edge[draw]; $\ldots$
]
\end{document}
Bei den ersten beiden werden die Knoten einfach im untersten Level eingefügt und die entsprechenden Verbindungen zum obersten erst hinterher gezeichnet. Beim dritten Vorschlag wird der Abstand des jeweils untersten Knoten zum obersten festgelegt.
Gruß
Elke
Es ist übrigens vorteilhaft, kurzen Code wie in Deinem Beispiel, direkt in den Beitrag einzubinden, statt ihn anzuhängen, weil er dann direkt zu sehen ist. Natürlich sollte man den Code im Beitrag dann als solchen markieren (http://www.mrunix.de/forums/misc.php?do=bbcode). Das geht in der erweiterten Ansicht auch einfach mit Hilfe des #-Knopfes in der Toolbar.
http://www.texample.net/tikz/examples/ kennst Du? Dort gibt es auch Beispiele für Bäume (http://www.texample.net/tikz/examples/feature/trees/) unterschiedlichster Art.
http://www.texample.net/tikz/examples/ kennst Du? Dort gibt es auch Beispiele für Bäume (http://www.texample.net/tikz/examples/feature/trees/) unterschiedlichster Art.
Kenn ich. Konnte mir aber bei meinem Problem nicht weiterhelfen. Danke für die Erklärung mit dem Code, werde ich beim nächsten mal so machen.
@esdd: Vielen Dank. Das mit den seitlichen 'langen Armen' sieht schon mal so aus, wie es soll :) Jetzt müsste ich bloß noch rauskriegen, wie das funktioniert, dass alle mittleren Knoten auch solche 'langen Arme' aufweisen.
Das Prinzip lässt sich doch jeweils auf die anderen Knoten übertragen:
\documentclass[parskip=half]{scrartcl}
\usepackage{tikz-qtree,tikz-qtree-compat}
\begin{document}
\begin{tikzpicture}[level 3/.style={sibling distance=1cm},level distance=12mm,font=\strut]
\node(P0){X\textsuperscript{n}}
child {node(P1){X\textsuperscript{n-1}}
child {node(P2){$\ldots$}
child {node(Cl0){$\ldots$}edge from parent[draw=none]}
child {node(Cl1){$\ldots$}edge from parent[draw=none]}
child {node(Cl2){$\ldots$}edge from parent[draw=none]}
child {node{X\textsuperscript{0}}}
child {node(Cr2){$\ldots$}edge from parent[draw=none]}
child {node(Cr1){$\ldots$}edge from parent[draw=none]}
child {node(Cr0){$\ldots$}edge from parent[draw=none]}
}
}
;
\foreach \l in {0,...,2}\path (P\l)edge(Cl\l)edge(Cr\l);
\end{tikzpicture}
\begin{tikzpicture}[level 3/.style={sibling distance=0.5cm},level distance=12mm,font=\strut]
\Tree [.\node(P0){X^{n}};
[.\node(P1){X^{n-1}};
[.\node(P2){$\ldots$};
\edge[draw=none];\node(Cl0){ $\ldots$ };
\edge[draw=none];\node(Cl1){ $\ldots$ };
\edge[draw=none];\node(Cl2){ $\ldots$ };
X^{0}
\edge[draw=none];\node(Cr2){ $\ldots$ };
\edge[draw=none];\node(Cr1){ $\ldots$ };
\edge[draw=none];\node(Cr0){ $\ldots$ };
]
]
]
\foreach \l in {0,...,2}\path (P\l)edge(Cl\l)edge(Cr\l);
\end{tikzpicture}
\tikzset{level distance=12mm,frontier/.style={distance from root=36mm}}
\Tree [.X^{n}
$\ldots$
[.X^{n-1}
$\ldots$
[. $\ldots$
$\ldots$
X^{0}
\edge[draw]; $\ldots$
]
\edge[draw]; $\ldots$
]
\edge[draw]; $\ldots$
]
\end{document}
Gruß
Elke
Das Prinzip lässt sich doch jeweils auf die anderen Knoten übertragen
Hallo Elke,
bei mir hat es letzendlich an der Klammersetzung gekrankt. Nun sieht es super aus.
Vielen Dank an alle, die mir helfen konnten.
edit.09.09.2013:
Nun hat sich ein neues Problem ergeben. Ich brauche noch eine Vorlage für einen Baum, bei dem die rechten Äste senkrecht nach unten verlaufen und die linken zur Seite abgehen.
\documentclass[a4paper,12pt]{scrreprt}
\usepackage{tikz-qtree}
\begin{document}
%Ausgangslage
\Tree [.XP [.X' [.X' [.X ] ] ] ]
%so soll es ergänzt werden, dabei soll obige Struktur beibehalten werden
\Tree [.XP [.a ][.X' [.b ] [. X' [.c ] [.X ] ] ] ]
\end{document}
Mir ist jetzt nicht klar, ob die linken Äste wieder bis ganz unten gehen sollen? Hier ist deshalb jeweils ein Vorschlag mit den Bäumen aus tikz, da mir nicht klar ist, ob und wie man das mit qtree realisieren kann:
\documentclass[a4paper,12pt]{scrreprt}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}[font=\strut,%
grow via three points={one child at (0,-1.5) and two children at (-1,-1.5) and (0,-1.5)}]
\node{X}
child {node{a}}
child {node{X'}
child {node{g}}
child {node {X'}
child {node {c}}
child {node {X}}
}
}
;
\end{tikzpicture}
\begin{tikzpicture}[font=\strut,%
grow via three points={one child at (0,-1.5) and two children at (-1,-1.5) and (0,-1.5)}]
\node(P0){X\textsuperscript{n}}
child {node(P1){X'}
child {node(P2){X'}
child {node(Cl0){a}edge from parent[draw=none]}
child {node(Cl1){b}edge from parent[draw=none]}
child {node(Cl2){c}edge from parent[draw=none]}
child {node{X}}
}
}
;
\foreach \l in {0,...,2}\path (P\l)edge(Cl\l);
\end{tikzpicture}
\end{document}
Gruß
Elke
Hallo,
diesmal sollten die 'Kinder' nicht bis nach unten. Aber wenn ich es doch mal brauchen sollte, habe ich jetzt auch den Code dafür. :)
Bei normalen, kleinen Bäumen geht das mit qtree schneller, da ich dort besser mit den Klammern zurechtkomme.
Edit:
Ist es bei dem ersten Beispiel auch möglich, die Abstände zwischen den Leveln/Siblings zu verändern? Habe es mit level/silbling distance=... versucht, aber an den Abständen hat sich nichts getan, weder für den ganzen Baum, noch wenn ich das für ein Level einzeln angelegt habe.
Edit 2:
Habe es nun mit xshift für die einzelnen Kinder realisiert. Funktioniert einwandfrei.
Die Abstände werden in beiden Beispielen mit der Option
grow via three points={one child at (0,-1.5) and two children at (-1,-1.5) and (0,-1.5)}
eingestellt. Gibt es nur ein Kind, dann wird es bei (0,-1.5) eingefügt und bei zwei Kindern wird das erste bei (-1,-1.5) und das zweite bei (0,-1.5) eingefügt. Sind noch mehr Kinder vorhanden, so wird deren Platzierung aus diesen drei Koordinaten ermittelt.
Genauer (und besser) ist das im Kapitel 53 Tree Library des pgfmanual (http://texdoc.net/texmf-dist/doc/generic/pgf/pgfmanual.pdf) erklärt.
Gruß
Elke
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.