TikZ Trees zeichnen

Tabellen und Grafiken erstellen und anordnen


erdbeermutzel
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mo 26. Jun 2017, 14:01

TikZ Trees zeichnen

Beitrag 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

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 809
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag 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}

erdbeermutzel
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mo 26. Jun 2017, 14:01

Beitrag von erdbeermutzel »

Vielen Dank - das hat alles ohne Probleme funktioniert!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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}

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

Beitrag 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)
Dateianhänge
baum.png
baum.png (4.62 KiB) 2615 mal betrachtet

Antworten