Seite 1 von 1

TikZ: Farbe der Verbindungslinien ändern

Verfasst: Do 19. Feb 2015, 16:35
von mofehl
Moin!

Wie kann ich in TikZ nur die Farbe der Verbindungslinien ändern? Irgendwie bin ich im Manual nicht fündig geworden (obwohl das sicherlich irgendwo steht). Zur Verdeutlichung ein kleines Minimalbeispiel. Ich möchte, dass die Linien von Ich zu Vater/Mutti andersfarbig sind.
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}
\begin{tikzpicture}[
    grow'=right,
    edge from parent fork right,
]
\node (root) {Ich}
    child {node (Vater) {Vater}}
    child {node (Mutti) {Mutti}};
\end{tikzpicture}
\end{document}

Eine Frage des Stils

Verfasst: Do 19. Feb 2015, 16:59
von Beobachter
Dazu gibt es den Stil edge from parent. Der kann innerhalb der Liste an optionalen Argumenten für die Umgebung tikzpicture nach Wunsch angepasst werden.
\documentclass[11pt,margin=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}
  \begin{tikzpicture}[
    grow'=right,
    edge from parent fork right,
    edge from parent/.style={draw=red}
  ]
    \node (root) {Ich}
      child {node (Vater) {Vater}}
      child {node (Mutti) {Mutti}};
  \end{tikzpicture}
\end{document}
Da passt auch noch mehr rein. Bei der Suche nach diesem Stil in der Anleitung von PGF/tikZ sind viele Beispiele zu finden.

Verfasst: Do 19. Feb 2015, 20:22
von mofehl
Vielen Dank! Das hilft schon weiter. Leider ist das noch nicht zu 100% die gesuchte Lösung. Das liegt aber vor allem daran, dass ich mich etwas unklar ausgedrückt habe, sry dafür. Im nächsten Minimalbeispiel wird deutlich, dass nicht alle Verbindungslinien von der Einstellung edge from parent/.style={draw=red} betroffen sind. Ich suche aber die Einstellung, die nur und ausschließlich die Verbindungslinien ändert, und zwar alle.

Hat jemand noch einen Vorschlag?
\documentclass[11pt,margin=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}
  \begin{tikzpicture}[
    grow'=right,
    edge from parent fork right,
    edge from parent/.style={draw=red}
  ]
    \node (root) {Ich}
      child {node (Vater) {Vater}}
      child {node (Mutti) {Mutti}};
	
	\draw (Vater) -- (Mutti);
  \end{tikzpicture}
\end{document}

Halbe Lösung

Verfasst: Do 19. Feb 2015, 21:56
von Beobachter
mofehl hat geschrieben:[…] Ich suche aber die Einstellung, die nur und ausschließlich die Verbindungslinien ändert, und zwar alle. […]
Eine globale Einstellung gäbe es schon dafür. Die würde aber nicht nur die Verbindungslinien betreffen, sondern alle Zeichnungselemente. Solange um die Knoten jedoch keine Rahmen gelegt wird, fällt das nicht auf (\node[draw] …).

Die globale Einstellung ist insofern von Nachteil, als dass einige Zeichnungselemente auch mal in einer anderen Farben erstellt werden sollen. Dann wäre beispielsweise \draw[blue] … für die Verbindungslinie außerhalb der Baumstruktur notwendig.
\documentclass[11pt,margin=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}
  \begin{tikzpicture}[
    draw=red,             % alle Elemente in gewünschter Farbe
    grow'=right,
    edge from parent fork right,
    edge from parent/.style={draw=red}
  ]
    \node (root) {Ich}
      child {node (Vater) {Vater}}
      child {node (Mutti) {Mutti}};
    \draw (Vater) -- (Mutti);
  \end{tikzpicture}
\end{document}
Solche Dinge sind sehr gut und zeitsparend in der Anleitung zu »PGF/tikZ« nachlesbar.

Verfasst: Do 19. Feb 2015, 23:29
von esdd
Du kannst für die Verbindungslinien auch edge verwenden und dann mit
every edge/.style={draw=red},
edge from parent/.style={every edge}
dafür sorgen, dass alle Verbindungslinien rot gezeichnet werden. Eventuelle Rahmen um Knoten wären dann von der Farbänderung nicht betroffen.
\documentclass[11pt,margin=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}
  \begin{tikzpicture}[
    every edge/.style={draw=red},
    grow'=right,
    edge from parent fork right,
    edge from parent/.style={every edge}
  ]
    \node (root) {Ich}
      child {node[draw] (Vater) {Vater}}
      child {node[draw] (Mutti) {Mutti}};
    \path(Vater) edge (Mutti); 
  \end{tikzpicture}
\end{document}
Gruß
Elke

Bild

Verfasst: Fr 20. Feb 2015, 12:12
von mofehl
Hallo Elke und Beobachter, vielen Dank euch beiden für eure Lösungen! Beide führen mich zum Ziel.