TikZ Trees zeichnen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: TikZ Trees zeichnen

von Bartman » Di 27. Jun 2017, 15:37

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) 2658 mal betrachtet

von esdd » Di 27. Jun 2017, 13:19

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}

von erdbeermutzel » Di 27. Jun 2017, 13:14

Vielen Dank - das hat alles ohne Probleme funktioniert!

von Beinschuss » Di 27. Jun 2017, 11:17

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}

TikZ Trees zeichnen

von erdbeermutzel » Di 27. Jun 2017, 10:52

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

Nach oben