Tikz Baumstruktur mehrere Ebenen

Tabellen und Grafiken erstellen und anordnen


letscho84
Forum-Anfänger
Forum-Anfänger
Beiträge: 45
Registriert: Fr 11. Mär 2011, 10:51

Tikz Baumstruktur mehrere Ebenen

Beitrag von letscho84 »

Hallo zusammen,

ich versuche mir gerade eine einfache Baumstruktur zusammen zu bauen im Tikz. Jedoch sind die zweiten child-notes überlagert. Wie kann ich das beheben, so dass die unterste Ebene immer an ihrem entsprechenden Elternteil hängt und danach erst das nächste Teil?

Code: Alles auswählen

\documentclass{scrartcl}

% Anpassung an Landessprache ---------------------------------------------------
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

% Zeichnungen und Mindmaps ----------------------------------------------------------------------
\usepackage{epsfig}
\usepackage{tikz}
\usetikzlibrary{mindmap,trees}

\begin{document}

\tikzstyle{every node}=[draw=black,thick,anchor=west]

\begin{figure}
  \centering
		\begin{tikzpicture}[%
			grow via three points={one child at (0.5,-0.7) and
			two children at (0.5,-0.7) and (0.5,-1.4)},
			edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
			\node {Hauptbaugruppe}
				child { node {Unterbaugruppe A}
					child { node {Zusammenbauzeichnung A}}
					child { node {Einzelteilzeichnung A}}
					child { node {Stückliste A}}
							}
				child { node {Unterbaugruppe B}
					child { node {Zusammenbauzeichnung B}}
					child { node {Einzelteilzeichnung B}}
					child { node {Stückliste B}}
							}
				child { node {Einzelteil C}};
		\end{tikzpicture}
  \caption{Zeichnungsaufbau}
  \label{fig:Zeichnungsaufbau}
\end{figure}

\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2116
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Eine Verzeichnisstruktur lässt sich mit forest leichter zeichnen.

Code: Alles auswählen

\documentclass[border=5pt]{standalone}
\usepackage[edges]{forest}% das Paket lädt TikZ

\begin{document}
\begin{forest}
for tree={folder, grow'=0, draw}
[Hauptbaugruppe
    [Hauptbaugruppe A
        [Zusammenbauzeichnung A]
        [Einzelteilzeichnung A]
        [Stückliste A]
    ]
    [Hauptbaugruppe B
        [Zusammenbauzeichnung B]
        [Einzelteilzeichnung B]
        [Stückliste B]
    ]
    [Einzelteil C]
]
\end{forest}
\end{document}
Für pgf/TikZ konnte ich zwei Methoden ausfindig machen. Die erste könntest Du von texample.net kennen. Die zweite Methode ist zwar unflexibel, aber machbar.

Code: Alles auswählen

\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{trees}

\begin{document}
      \begin{tikzpicture}[
         nodes={draw=black,thick,anchor=west},
         grow via three points={one child at (0.5,-0.7) and
         two children at (0.5,-0.7) and (0.5,-1.4)},
         edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
         \node {Hauptbaugruppe}
            child { node {Unterbaugruppe A}
               child { node {Zusammenbauzeichnung A}}
               child { node {Einzelteilzeichnung A}}
               child { node {Stückliste A}}
                     }
            child [missing] {}	
            child [missing] {}	
            child [missing] {}	
            child { node {Unterbaugruppe B}
               child { node {Zusammenbauzeichnung B}}
               child { node {Einzelteilzeichnung B}}
               child { node {Stückliste B}}
                     }
            child [missing] {}	
            child [missing] {}	
            child [missing] {}	
            child { node {Einzelteil C}};
      \end{tikzpicture}
      \begin{tikzpicture}[
         nodes={draw=black,thick,anchor=west},
         grow via three points={one child at (0.5,-0.7) and
         two children at (0.5,-0.7) and (0.5,-1.4)},
         edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
         \node {Hauptbaugruppe}
            child { node {Unterbaugruppe A}
               child { node {Zusammenbauzeichnung A}}
               child { node {Einzelteilzeichnung A}}
               child { node {Stückliste A}}
                     }
            child { node at (0,-2.1) {Unterbaugruppe B}
               child { node {Zusammenbauzeichnung B}}
               child { node {Einzelteilzeichnung B}}
               child { node {Stückliste B}}
                     }
            child { node at (0,-4.2) {Einzelteil C}};
      \end{tikzpicture}
\end{document}

Antworten