Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Baumdiagramm Linguistik

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.09.2013
    Beiträge
    9

    Question 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

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hier sind mal 3 Lösungsvorschläge:

    Code:
    \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

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    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. 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 unterschiedlichster Art.

  4. #4
    Registrierter Benutzer
    Registriert seit
    01.09.2013
    Beiträge
    9
    Zitat Zitat von klops Beitrag anzeigen
    http://www.texample.net/tikz/examples/ kennst Du? Dort gibt es auch Beispiele für Bäume 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.

  5. #5
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Das Prinzip lässt sich doch jeweils auf die anderen Knoten übertragen:

    Code:
    \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

  6. #6
    Registrierter Benutzer
    Registriert seit
    01.09.2013
    Beiträge
    9
    Zitat Zitat von esdd Beitrag anzeigen
    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.

    Code:
    \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}
    Geändert von XRay (09-09-2013 um 10:19 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    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:

    Code:
    \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

  8. #8
    Registrierter Benutzer
    Registriert seit
    01.09.2013
    Beiträge
    9
    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.
    Geändert von XRay (10-09-2013 um 13:25 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Die Abstände werden in beiden Beispielen mit der Option

    Code:
    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 erklärt.

    Gruß
    Elke

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •