Wie bekomme ich so ein Schema mit ordentlichen Abständen, zentrierten Texten und GLEICH großen Boxen in TikZ gesetzt?

BILD

Mein erster Absatz war das über "Trees" zu machen. Dabei kam aber nur Murks raus. Sprich verschiedene Boxen, Abstände die nicht gepasst haben etc. Ich suche nach einer Möglichkeit solche Übersichten generell schnell & automatiersiert zu erstellen... kann jemand helfen? Danke!!

gefragt 07 Sep '14, 16:17

wiewowas's gravatar image

wiewowas
452203040
Akzeptiert-Rate: 40%

bearbeitet 08 Sep '14, 18:37

gast3's gravatar image

gast3
(ausgesetzt)


Hier sind mal noch zwei weitere Vorschläge. Die Breite der child Nodes ist dabei immer gleich text width zuzüglich dem doppelten des inner sep. Die Höhe beträgt mindestens minimum height, d.h. minimum height muss von Hand so gewählt werden, dass auch der längste Inhalt in die Box passt.

Als Baum

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
    nodes={draw,fill=red!10!green!55!blue!30,rounded corners=8pt,inner sep=.5em,
      font=\bfseries\sffamily,align=center},
    every child node/.style={minimum height=1.8cm,text width=2.5cm},
    level distance=2.5cm,
    sibling distance=3.2cm,
    edge from parent path={
      (\tikzparentnode\tikzparentanchor) --+(0,-1.4cm)-| (\tikzchildnode\tikzchildanchor)}
  ]
  \node[node font=\Large,inner sep=1em]{Fügetechnologien}
    child{node{Mechanisches Fügen}}
    child{node{Fügen durch Umformen}}
    child{node{Thermisches Fügen}}
    child{node{Kleben}}
    child{node{Hybridfügen}}
  ;
\end{tikzpicture}
\end{document}

alt text

Als Matrix

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}[
    treebox/.style={draw,fill=red!10!green!55!blue!30,rounded corners=8pt,inner sep=.5em,
      font=\bfseries\sffamily,align=center}
  ]
  \node[treebox,node font=\large,inner sep=1em](root){Fügetechnologien};
  \matrix(children)[
      matrix of nodes,
      anchor=north,inner sep=0pt,
      column sep=10pt,
      nodes={treebox,minimum height=1.8cm,text width=2.5cm,anchor=center}
    ]at([yshift=-1cm]root.south){
      Mechanisches Fügen&
      Fügen durch Umformen&
      Thermisches Fügen&
      Kleben&
      Hybridfügen\\
    };
  \foreach \i in {1,...,5}
    \draw(root.south)--+(0,-.75)-|(children-1-\i.north);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Sep '14, 20:42

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Optimal! Genau so habe ich das gesucht. Vorallem weil man damit ähnliche Übersichten im Handumrehen erstellen kann =)

(07 Sep '14, 21:22) wiewowas

Über die beiden Optionen text width und minimum size lässt sich die Größe der Nodes leicht fixieren. Nodes die exorbitant viel Text beinhalten wachsen aber dennoch über die gegebenen Parameter hinaus, damit es nicht komisch aussieht (eine Option maximum size gibt es übrigens nicht).

Den |-| Pfad habe ich von TeX.SX: Vertical and horizontal lines in pgf-tikz

Von Hand mit Nodes

Open in writeLaTeX
\documentclass[landscape]{article}
\usepackage[utf8]{inputenx}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}[
  every node/.style={draw,fill=cyan,rounded corners,minimum size=8em,text width=8em,align=center},
  node distance=1em,
  |-|/.style={
    to path={
      (\tikztostart) |- ($(\tikztostart)!.5!(\tikztotarget)$) -| (\tikztotarget)
      \tikztonodes
    }
  },
  ]
  \node (root) {Fügetechnologien};
  \node[below=of root] (child1) {Thermisches Fügen};
  \node[right=of child1] (child2r) {Kleben};
  \node[left=of child1] (child2l) {Fügen durch Umformen};
  \node[right=of child2r] (child3r) {Hybridfügen};
  \node[left=of child2l] (child3l) {Mechanisches Fügen};
  \foreach \p in {child1,child2r,child2l,child3r,child3l} {
    \draw (root) to[|-|] (\p);
  }
\end{tikzpicture}
\end{document}

alt text

Mit graphdrawing

Benötigt LuaLaTeX

Open in writeLaTeX
\documentclass[landscape]{article}
\usepackage{fontspec,tikz}
\usetikzlibrary{graphs,graphdrawing,calc}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[
  every node/.style={draw,fill=cyan,rounded corners,minimum size=8em,text width=8em,align=center},
  |-|/.style={
    to path={
      (\tikztostart) |- ($(\tikztostart)!.5!(\tikztotarget)$) -| (\tikztotarget)
      \tikztonodes
    }
  },
  ]
  \graph [tree layout] {
    Fügetechnologien --[|-|] {
      Mechanisches Fügen,
      Fügen durch Umformen,
      Thermisches Fügen,
      Kleben,
      Hybridfügen
    }
  };
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Sep '14, 16:48

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 07 Sep '14, 16:58

Danke! Die andere Antwort trifft es etwas besser =)

(07 Sep '14, 21:20) wiewowas
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×76
×11
×7

gestellte Frage: 07 Sep '14, 16:17

Frage wurde gesehen: 16,378 Mal

zuletzt geändert: 08 Sep '14, 18:37