Seite 1 von 1

TikZ Trees zeichnen

Verfasst: Di 27. Jun 2017, 10:52
von erdbeermutzel
Hallo,

ich habe jetzt einen Tree mittels TikZ gezeichnet, was auch alles wunderbar geklappt hat. Jetzt muss ich allerdings noch etwas zwischen die einzelnen Childs schreiben bzw unter die Childs als normalen Text, also ungerahmt und ohne Pfad.

Mein derzeitiger Code ist vereinfacht dargestellt:
\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{positioning,shadings,arrows,trees, intersections}

\begin{document}
	\begin{tikzpicture}
		[edge from parent fork down,auto]
		\tikzset{
			treenode/.style={align=center, rectangle, draw=black},
			root/.style={treenode, inner sep= 10pt, text width = 5cm},
			1/.style={treenode, inner sep= 7pt, text width = 3cm},
			2/.style={treenode, inner sep= 5pt, text width = 1.5cm},
			level1/.style = {sibling distance=7cm, level distance=1.5cm},
			level2/.style = {sibling distance=3cm, level distance=1.5cm}
			}


		\node[root]{\large {Wurzel}}
			child[level1]{node[1]{Ast1}
				child[level2]{node[2]{Zweig1}}
				child[level2]{node[2]{Zweig2}}}
			child[level1]{node[1]{Ast2}
				child[level2]{node[2]{Zweig3}}
				child[level2]{node[2]{Zweig4}}};


	\end{tikzpicture}
\end{document}
Ich möchte jetzt z.b: in den leeren Raum zwischen Ast1 und Ast2 ein "X" schreiben, zwischen Zweig1 und Zweig2 eine "/" und unter Ast2 dann einen kurzen Text, als Bsp. hier "Text"

Wie kann ich meinen Baum dadurch noch ergänzen? ich bin da leider wirklich im Moment sehr ratlos

Verfasst: Di 27. Jun 2017, 11:17
von Beinschuss
Sehr schönes Minimalbeispiel! Du kannst neue Nodes frei positionieren. Im Beispiel ist das X einfach nur soweit auf der Y-Achse runtergeschoben, dass es (nach Augenmaß) mittig steht:
\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{positioning,shadings,arrows,trees, intersections}

\begin{document}
   \begin{tikzpicture}
      [edge from parent fork down,auto]
      \tikzset{
         treenode/.style={align=center, rectangle, draw=black},
         root/.style={treenode, inner sep= 10pt, text width = 5cm},
         1/.style={treenode, inner sep= 7pt, text width = 3cm},
         2/.style={treenode, inner sep= 5pt, text width = 1.5cm},
         level1/.style = {sibling distance=7cm, level distance=1.5cm},
         level2/.style = {sibling distance=3cm, level distance=1.5cm}
         }


      \node[root]{\large {Wurzel}}
         child[level1]{node[1]{Ast1}
            child[level2]{node[2]{Zweig1}}
            child[level2]{node[2]{Zweig2}}}
         child[level1]{node[1]{Ast2}
            child[level2]{node[2]{Zweig3}}
            child[level2]{node[2]{Zweig4}}};
       \node(zwischenx) [yshift=-1.6cm]{X}; %eingefügt

   \end{tikzpicture}
\end{document}

Verfasst: Di 27. Jun 2017, 13:14
von erdbeermutzel
Vielen Dank - das hat alles ohne Probleme funktioniert!

Verfasst: Di 27. Jun 2017, 13:19
von esdd
Wenn Du dem Wurzelnode einen Namen gibst, werden auch die Kinder automatisch benannt. Diese Nodenamen kannst Du dann zum Positionieren verwenden.
\documentclass{scrartcl} 

\usepackage{tikz} 
\usetikzlibrary{positioning,shadings,arrows,trees, intersections} 

\begin{document} 
\begin{tikzpicture} 
[edge from parent fork down,auto] 
\tikzset{ 
treenode/.style={align=center, rectangle, draw=black}, 
root/.style={treenode, inner sep= 10pt, text width = 5cm}, 
1/.style={treenode, inner sep= 7pt, text width = 3cm}, 
2/.style={treenode, inner sep= 5pt, text width = 1.5cm}, 
level1/.style = {sibling distance=7cm, level distance=1.5cm}, 
level2/.style = {sibling distance=3cm, level distance=1.5cm} 
} 


\node[root](tree){\large {Wurzel}} 
child[level1]{node[1]{Ast1} 
child[level2]{node[2]{Zweig1}} 
child[level2]{node[2]{Zweig2}}} 
child[level1]{node[1]{Ast2} 
child[level2]{node[2]{Zweig3}} 
child[level2]{node[2]{Zweig4}}};
\path[auto=false]
  (tree-1.east) -- node{X} (tree-2.west)
  (tree-1-1.east) -- node{/} (tree-1-2.west)
  (tree-2-1.south east)-- node[below=.25cm]{Text} (tree-2-2.south west)
;
\end{tikzpicture} 
\end{document}

Verfasst: Di 27. Jun 2017, 15:37
von Bartman
Unter Verwendung des Beispiels von esdd möchte ich weitere Eingriffe vorschlagen:
\documentclass[tikz, border=5pt]{standalone} 

\usetikzlibrary{trees}

\begin{document} 
\begin{tikzpicture}[
   edge from parent fork down,
   auto
] 
\tikzset{ 
   treenode/.style={align=center,draw}, 
   root/.style={treenode, inner sep= 10pt, text width = 5cm, font=\large}, 
   1/.style={treenode, inner sep= 7pt, text width = 3cm}, 
   2/.style={treenode, inner sep= 5pt, text width = 1.5cm},
   level/.style={level distance=1.5cm},
   level 1/.style = {sibling distance=7cm}, 
   level 2/.style = {sibling distance=3cm} 
} 


\node[root](tree){Wurzel}
   child{node[1]{Ast1} 
      child{node[2]{Zweig1}} 
      child{node[2]{Zweig2}}
   } 
   child{node[1]{Ast2} 
      child{node[2]{Zweig3}} 
      child{node[2]{Zweig4}}
   };
\path[auto=false]
   (tree-1.east) -- node{X} (tree-2.west)
   (tree-1-1.east) -- node{/} (tree-1-2.west)
   (tree-2-1.south east)-- node[below=.25cm]{Text} (tree-2-2.south west)
;
\end{tikzpicture} 
\end{document}
Bild
(stefan: Bild hochgeladen)