Hopfen

tutorials :: Mindmaps

Inhalt

Eine Mindmap ist eine grafische Darstellung, die Beziehungen und Relationen zwischen verschiedenen Begriffen aufzeigen soll. Mindmaps eignen sich zur Ideensammlung, zum Strukturieren, um Vorträge vorzubereiten und natürlich zur Prüfungsvorbereitung. In diesem tutorial sollen die Fähigkeiten des pgf-packages in Sachen Mindmaps, anhand von einfachen Beispielen, aufgezeigt werden. Im pgf-manual wird dieses Gebiet in Kapitel 25 behandelt.

Trees in TikZ

Mindmaps werden in TikZ wie Bäume (Trees) konstruiert, weshalb wir uns zuerst mit der Struktur von solchen Trees beschäftigen. Dafür muss mit \usetikzlibrary{trees} in der Präambel des TeX-Dokumentes die trees-library geladen werden. Im pgf-manual findet man eine Einführung in Kapitel 15.

Um Trees zu zeichnen machen wir von dem child-Befehl gebrauch. Zuerst wird ein node gesetzt, also die Wurzel des Baumes (root). Dann folgen die Äste des Baumes in Form von Kindern (child). Jeder Ast kann einen node am Ende haben und/oder sich weiter verzweigen. Dafür hier am besten ein Beispiel.

\begin{tikzpicture}
 
  \tikzstyle{level 1}=[sibling distance=60mm]
  \tikzstyle{level 2}=[sibling distance=60mm]
  \tikzstyle{level 3}=[sibling distance=30mm]

  \node {Statistische Tests}
    child {node {Ein-Stichproben-Fall}
      child{ node {Hypothesen über Anteilswerte}}
      child{ node {Hypothesen über EWerte}
        child{ node {Gauß-Test}}
        child{ node {t-Test}}
      }
    }
    child {node {Zwei-Stichproben-Fall}};

\end{tikzpicture}
    

back to top

Dieses unvollständige Beispiel zeigt eine mögliche Schematisierung von statistischen Tests. Der Befehl \tikzstyle{level 1}=[sibling distance=60mm] bewirkt einen Abstand von 60 mm zwischen Ein-Stichproben-Fall und Zwei-Stichproben-Fall, bestimmt also den Abstand in der ersten Hierarchie-Ebene (level 1). Für die anderen Ebenen folgen entsprechende Befehle. Sollten keine weiteren Abstandsdefinitionen folgen, so wird der Abstand der letzten Hierarchie-Ebene verwendet. Der restliche code dürfte eigentlich klar sein.

Mit normalen trees lässt sich schon so einiges anfangen. So kann man z.B. mit dem grow-Befehl bestimmen, in welche Richtung der entsprechende Ast wachsen soll. Dazu im nächsten Abschnitt oder aber im pgf-manual mehr.

Ein einfaches Beispiel

Will man mit TikZ Mindmaps erstellen, so muss neben der trees-library auch die mindmap-library geladen werden, also in der Präambel \usetikzlibrary{mindmap,trees} stehen. Die mindmap-library erlaubt mit der Angabe von concept das Erstellen von Mindmap-artigen Gebilden im organischen look.

Hier betrachten wir die (nichtvorhandene) Hierarchie der Statistiker-Wg. Als root-node bietet sich natürlich der Name Statistiker-Wg selbst an. Von diesem sollen sich nun alle vier Mitglieder verzweigen und zusätzlich einige Eigenschaften aufgezählt werden. Hier sehen wir auch schon das erste Beispiel.

\begin{tikzpicture}[mindmap, concept color=gray!50, font=\sf, text=white]

  \tikzstyle{level 1 concept}+=[font=\sf]
 
  \node[concept] {Statsitiker\\ WG}
    child[concept color=orange, grow=right]{ node[concept]{Janna}};

\end{tikzpicture}
    

back to top

Gleich zu Beginn wird TikZ gesagt, dass es sich um eine Mindmap handelt. Daraufhin werden einige Attribute wie die Farbe und Schriftart des root-concepts gesetzt. Die Attribute für das level 1 können danach mit tikzstyle verändert werden. In diesem Fall wird die Schriftart der ersten Hierarchie-Ebene verändert. Es folgt die gleiche Syntax wie bei den oben behandelten trees, jedoch immer mit der Angabe von concept und dem Verändern von bestimmten Variablen wie der Farbe. Die Angabe von grow=right bewirkt, dass der Ast an der rechten Seite des root-concepts herauswächst.

Nun wollen wir Janna noch einige Eigenschaften zuweisen, wie z.B. Herkunft, Anwendungsgebiet und in welchem Zimmer sie wohnt. Das führt uns zum nächsten Beispiel.

\begin{tikzpicture}[mindmap, concept color=gray!50, font=\sf, text=white]

  \tikzstyle{level 1 concept}+=[font=\sf]
  \tikzstyle{level 2 concept}+=[font=\sf, sibling angle=90]
 
  \node[concept] {Statsitiker\\ WG}
    child[concept color=orange, grow=right]{ node[concept]{Janna}
      [clockwise from=90]
      child[concept color=orange!70]{ node[concept]{Zimmer 02}}
      child[concept color=orange!70]{ node[concept]{Flensburg}}
      child[concept color=orange!70, font=\sf \small]{ node[concept]
           {Medizin\-ische Biometrie}}
    };

\end{tikzpicture}
    

back to top

Mit tikzstyle wird auch hier für das level 2 die Schriftart bestimmt. Zusätzlich aber auch noch der Winkelabstand, der zwischen den Ästen der zweiten Hiearchie-Ebene liegen soll. Der Befehl [clockwise from=90] bestimmt den Startwinkel, an dem der erste Ast wachsen soll. In diesem Fall also bei 90°. Damit der Name des Anwendungsgebietes in das concept passt, wird die Schriftgröße noch auf small gesetzt.

Die anderen drei WG-Mitglieder werden nun in ähnlicher Art und Weise hinzugefügt. Das Ergebnis sieht dann wie folgt aus. Das ganze könnte man natürlich auch als foreach-Schleife konstruieren, aber so finde ich es auch mal ganz schön.

\begin{tikzpicture}[mindmap, concept color=gray!50, font=\sf, text=white]

  \tikzstyle{level 1 concept}+=[font=\sf, sibling angle=90]
  \tikzstyle{level 2 concept}+=[font=\sf, sibling angle=90]
 
  \node[concept] {Statsitiker\\ WG}
  [clockwise from=45]
    child[concept color=orange, grow=right]{ node[concept]{Janna}
      [clockwise from=135]
      child[concept color=orange!70]{ node[concept]{Zimmer 02}}
      child[concept color=orange!70]{ node[concept]{Flensburg}}
      child[concept color=orange!70, font=\sf \small]{ node[concept]
           {Medizin\-ische Biometrie}}
    }
    child[concept color=green!50!black]{ node[concept]{Jule}
      [clockwise from=45]
      child[concept color=green!70!black]{ node[concept]{Zimmer 03}}
      child[concept color=green!70!black]{ node[concept]{Berlin}}
      child[concept color=green!70!black]{ node[concept]{Politik}}
    }
    child[concept color=red!80!black]{ node[concept]{Marcus}
      [clockwise from=315]
      child[concept color=red!90!black]{ node[concept]{Zimmer 01}}
      child[concept color=red!90!black]{ node[concept]{Erfurt}}
      child[concept color=red!90!black]{ node[concept]{VWL}}
    }
    child[concept color=blue!70]{ node[concept]{Paul}
      [clockwise from=225]
      child[concept color=blue!55]{ node[concept]{Zimmer 04}}
      child[concept color=blue!55]{ node[concept]{Berlin}}
      child[concept color=blue!55, font=\sf \small]{ node[concept]
           {Finanz\-ökono\-metrie}}
    };

\end{tikzpicture}
    

back to top

Ein ausführlicheres Beispiel

Nun wollen wir versuchen, mithilfe der mindmap-library die oben begonnene Übersicht statistischer Tests zu verschönern und zu ergänzen. Dabei reicht es uns nicht, den Text mit bunten Kreisen zu versehen. Wir wollen vielleicht noch ein wenig Zusatzinformation an die "Blätter" heften. Das erreichen wir mit annotation. Dazu wird dem child-node, dem eine Bemerkung angeheftet werden soll, ein Name gegeben. Hier soll z.B. beim Gauß-Test stehen, dass er nur anzuwenden ist, wenn die Varianz bekannt ist. Der Gauß-Test bekommt den Namen gausstest. Dann wird nach dem baum die Bemerkung mit einem node-Befehl hinzugefügt. Mit dem t-Test machen wir das gleiche. Das kann dann in etwa so aussehen.

\definecolor{myblue}{HTML}{92dcec}
\tikzstyle{every annotation}=[fill=myblue, font=\sf]
\begin{tikzpicture}[large mindmap, concept color=black, font=\sf \huge, text=white]

  \tikzstyle{level 1 concept}+=[font=\sf \Large]
  \tikzstyle{level 2 concept}+=[font=\sf \large]
  \tikzstyle{level 3 concept}+=[font=\sf]

  \node[concept] {Statistische \\ Tests}
    child[concept color=gray!80, grow=left]{ node[concept] {Ein-Stichproben-Fall}
      child[concept color=green!50!gray, grow=45]{ node[concept]
           {Hypothesen über den EWert}
        child[concept color=green!70!gray, grow=100]{ node[concept] 
             (gausstest){Gauß-Test}}
        child[concept color=green!70!gray]{ node[concept] 
             (ttest) {t-Test}}
      }
      child[concept color=red!70!gray, grow=135]{ node[concept]
           {Hypothesen über Anteilswerte}}
    }
    child[concept color=gray!80, grow=right]{ node[concept]{Zwei-Stichproben-Fall}};

  \node[annotation, left] at (gausstest.west)
      {$\sigma^2$ bekannt};
  \node[annotation, right] at (ttest.east)
      {$\sigma^2$ unbekannt};

\end{tikzpicture}
    

back to top

Damit diese Mindmap auch eine geeignete Größe hat, habe ich mich für die Größe large entschieden. Je nachdem, wie groß der Baum wird, sollte auch die Größe der Mindmap gewählt werden. Bei der Farbgestaltung sind einem keine Grenzen gesetzt. Nur zu grell sollte es nicht werden, da das sehr schnell ziemlich anstrengend werden kann. Eine mögliche Ergänzung dieser Übersicht stellt das folgende Beispiel auf A2 Papier dar.

\definecolor{myblue}{HTML}{92dcec}
\tikzstyle{every annotation}=[fill=myblue, font=\sf]
\begin{tikzpicture}[huge mindmap, concept color=black, font=\sf \Huge, text=white]

  \tikzstyle{level 1 concept}+=[font=\sf \huge]
  \tikzstyle{level 2 concept}+=[font=\sf \Large]
  \tikzstyle{level 3 concept}+=[font=\sf \large]
  \tikzstyle{level 4 concept}+=[font=\sf]

  \node[concept] {Statistische \\ Tests}
    child[concept color=gray!80, grow=left]{ node at (180:3) [concept] 
         (einstich) {Ein-Stichproben-Fall}
      child[concept color=green!50!gray, grow=45]{ node[concept]
           {Hypothesen über den EWert}
        child[concept color=green!70!gray, grow=100]{ node[concept] 
             (gausstest){Gauß-Test}}
        child[concept color=green!70!gray]{ node[concept] 
             (ttest) {t-Test}}
      }
      child[concept color=red!70!gray, grow=135]{ node[concept]
           {Hypothesen über Anteilswerte}
        child[concept color=red!90!gray]{ node[concept] (exakt) 
             {exakter Binomialtest}}
        child[concept color=red!90!gray, grow=210]{ node[concept] 
             (approx){approx. Binomialtest}}
      }
      child[concept color=orange, grow=225]{ node[concept] (vtlgsfrei) 
           {Hypothesen über den Median}
        child[concept color=orange!70!yellow]{ node[concept]
             {Vorzeichen-Test}}
        child[concept color=orange!70!yellow, grow=280]{ node[concept] 
             (vorzrang) {Wilcoxon Vorzeichen-Rang-Test}}
      }
      child[concept color=blue, grow=315]{ node[concept]{goodness of fit Tests}
        child[concept color=blue!70]{ node[concept]{$\chi^2$-Anpassungs\-test}
          child[concept color=blue!60]{ node[concept]{kate\-goriales Merkmal}}
          child[concept color=blue!60, grow=225]{ node[concept]{grup\-pierte Daten}}
        }
      }
    }
    child[concept color=gray!80, grow=right]{ node at (0:3) [concept]
         {Zwei-Stichproben-Fall}
      child[concept color=green!50!gray, grow=90]{ node[concept]
           {Vergleich aus unabh. Stichproben}
        child[concept color=green!70!gray, grow=170]{ node[concept]
             {Vergleich von Anteilen}
          child[concept color=green!80!gray]{ node[concept]
               {Exakter Test von Fisher}}
        }
        child[concept color=green!70!gray, grow=120]{ node[concept]
             {Vergleich von EWerten}
          child[concept color=green!80!gray, grow=160]{ node[concept] 
               (zweigauss) {Zwei-Stich\-proben-Gauß-Test}}
          child[concept color=green!80!gray, grow=90]{ node[concept] 
               (zweit) {Zwei-Stich\-proben-t-Test}}
        }
        child[concept color=green!70!gray, grow=60]{ node[concept]
             {Verteilungs\-freie Tests}
          child[concept color=green!80!gray]{ node[concept] 
               (zweiwilcox) {Wilcoxon-Rang\-summen-Test}}
        }
        child[concept color=green!70!gray, grow=10]{ node[concept]
             {goodness of fit Tests}
          child[concept color=green!80!gray, grow=350]{ node[concept]
               {$\chi^2$-Homogen\-itätstest}}
          child[concept color=green!80!gray, grow=50]{ node[concept] 
               (smirnov) {Kolmo\-gorov-Smirnov-Test}}
        }
      }
      child[concept color=red!70!gray, grow=225]{ node[concept]
           {Vergleich aus verbundenen Stichproben}
        child[concept color=red!90!gray, grow=225]{ node[concept] 
             (verbund) {keine gesonderte Betrachtung}}
        child[concept color=red!90!gray, grow=315]{ node[concept]
             {McNemar-Test für binäre Merkmale}}
      }
      child[concept color=orange, grow=315]{ node[concept]
           {Zusammen\-hangs\-analyse}
        child[concept color=orange!70!yellow]{ node[concept]
             {$\chi^2$-Unabhängig\-keitstest}}
        child[concept color=orange!70!yellow, grow=350]{ node[concept]
             {Korrelations\-test}}
      }
    };

    \node [annotation, left] at (gausstest.west)
      {$\sigma^2$ bekannt};
    \node [annotation, right] at (ttest.east)
      {$\sigma^2$ unbekannt};
    \node [annotation, right] at (exakt.east)
      {kleiner Stichprobenumfang};
    \node [annotation, right] at (approx.east)
      {großer Stichprobenumfang};
    \node [annotation, left] at (vtlgsfrei.west)
      {Verteilungsfrei, nonparametrisch;\\
      bei stetigen Verteilungen};
    \node [annotation, right] at (vorzrang.east)
      {bei symmetrischer Verteilung};
    \node [annotation, left] at (zweigauss.west)
      {$\sigma_X^2$ und $\sigma_Y^2$ bekannt};
    \node [annotation, left] at (zweit.west)
      {$\sigma_X^2$ und $\sigma_Y^2$ unbekannt};
    \node [annotation, right] at (zweiwilcox.east)
      {stetige Vtlgen vorausgesetzt};
    \node [annotation, right] at (smirnov.east)
      {stetige Vtlgen vorausgesetzt};

    \begin{pgfonlayer}{background}
      \draw [concept connection] (verbund) edge (einstich);
    \end{pgfonlayer}

\end{tikzpicture}
    

back to top

Das, was einem auffallen sollte, ist die Länge der Äste von "Ein-Stichproben-Fall" und "Zwei-Stichproben-Fall". Diese habe ich mit den Befehlen node at (180:3) bzw. node at (0:3) verlängert. Die erste Zahl in den runden Klammern gibt den Winkel an, bei dem der Ast herauswachsen soll. Die zweite Zahl gibt die Länge des Astes an. Das, was sonst noch an diesem Beispiel neu ist, ist die Verbindungslinie zwischen "Ein-Stichproben-Fall" und "keine gesonderte Betrachtung". Diese wurde mit der Umgebung pgfonlayer in den Hintergrund gezeichnet. Beim kompilieren verursacht das zwar bei mir einen Fehler, den ich mir zum jetzigen Zeitpunkt nicht erklären kann. Das hat aber keinen negativen Einfluss auf das Dokument.

Mindmap-Man

Zu guter letzt noch eine kleine Spielerei, der Mindmap-Man. An ihm kann man vielleicht nochmal schön die Verlängerung der Äste nachvolziehen. Ansonsten ist das nichts besonderes.

\begin{tikzpicture}[mindmap, concept color=green!70!gray, text=white,
                    minimum size=0.5cm, font=\sf \Large]

  \tikzstyle{level 1 concept}+=[font=\sf]
  \tikzstyle{level 2 concept}+=[font=\sf]

  \node[concept, minimum size=5cm] {Körper}
    child[grow=10, concept color=orange] {node at (80:5.5) [concept] {linke Hand}
      child[concept color=orange!90, grow=290] {node[concept] {kleiner Finger}}
      child[concept color=orange!80, grow=340] {node[concept] {Ring\-finger}}
      child[concept color=orange!70, grow=30] {node[concept] {Mittel\-finger}}
      child[concept color=orange!60, grow=80] {node[concept] {Zeige\-finger}}
      child[concept color=orange!50, grow=130] {node[concept] {Daumen}}}
    child[concept color=orange, grow=170] {node at (100:5.5) [concept] {rechte Hand}
      child[concept color=orange!90, grow=250] {node[concept] {kleiner Finger}}
      child[concept color=orange!80, grow=200] {node[concept] {Ring\-finger}}
      child[concept color=orange!70, grow=150] {node[concept] {Mittel\-finger}}
      child[concept color=orange!60, grow=100] {node[concept] {Zeige\-finger}}
      child[concept color=orange!50, grow=50] {node[concept] {Daumen}}}
    child[concept color=blue, grow=250] {node at (260:5.5) [concept] {rechter Fuß}
      child[concept color=blue!90, grow=100] {node[concept] {kleiner Zeh}}
      child[concept color=blue!80, grow=150] {node[concept] {dritter Zeh}}
      child[concept color=blue!70, grow=200] {node[concept] {Mittel\-zeh}}
      child[concept color=blue!60, grow=250] {node[concept] {zweiter Zeh}}
      child[concept color=blue!50, grow=300] {node[concept] {großer Onkel}}}
    child[concept color=blue, grow=290] {node at (280:5.5) [concept] {linker Fuß}
      child[concept color=blue!90, grow=80] {node[concept] {kleiner Zeh}}
      child[concept color=blue!80, grow=30] {node[concept] {dritter Zeh}}
      child[concept color=blue!70, grow=340] {node[concept] {Mittel\-zeh}}
      child[concept color=blue!60, grow=290] {node[concept] {zweite Zeh}}
      child[concept color=blue!50, grow=240] {node[concept] {großer Onkel}}}
    child[grow=90, concept color=red] {node [concept, minimum size=3cm] {Kopf}};

\end{tikzpicture}
    

back to top


Kontakt: Statistische Analysen für Wirtschaft und Wissenschaft