TikZ: Farbe der Verbindungslinien ändern

Tabellen und Grafiken erstellen und anordnen


mofehl
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Mi 27. Aug 2014, 13:07

TikZ: Farbe der Verbindungslinien ändern

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

Beobachter

Eine Frage des Stils

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

mofehl
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Mi 27. Aug 2014, 13:07

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

Beobachter

Halbe Lösung

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

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

Beitrag 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
Dateianhänge
gl_coled.png
gl_coled.png (7.88 KiB) 2302 mal betrachtet

mofehl
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Mi 27. Aug 2014, 13:07

Beitrag von mofehl »

Hallo Elke und Beobachter, vielen Dank euch beiden für eure Lösungen! Beide führen mich zum Ziel.

Antworten