Färben Sie jede Kante einzeln in TikZ

Färben Sie jede Kante einzeln in TikZ

Ich möchte die Kante AB dick blau und die Kanten AC und BC dick rot einfärben.

Unter Bezugnahme auf die Antwort inMehrere Farbkanten in TikZ, eine Möglichkeit besteht darin, den \clip[draw]Befehl zu verwenden. Ich bin mir jedoch nicht sicher, wie ich ihn in meinem Kontext verwenden soll, da meine Form ein Dreieck ist und das Dreieck ebenfalls mit orangefarbener Farbe gefüllt ist.

Erwartetes Ergebnis:

Bildbeschreibung hier eingeben

Aktuelles Ergebnis:

Bildbeschreibung hier eingeben

Das Dreieck sollte weiterhin mit der Farbe Orange gefüllt sein und die Kanten sollten die oben genannte Farbe haben.

Notiz: Dieses Beispiel stammt nur aus dem PGF-Handbuch. Die Bereitstellung des Codes im Handbuch ohne Erklärung wird nicht empfohlen/geschätzt.

Gibt es eine alternative Möglichkeit zum Ausfüllen einer Form, statt den Befehl \filldrawoder zu verwenden?\draw[fill]

MWE:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \draw[name path=A--B] (A) -- (B);
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \draw [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  \node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \draw[fill=orange!80] (A) -- (B) -- (C) -- cycle;
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

Antwort1

Einige Optionen können angewendet werden aufTeil des Weges, dies ist der Fall bei rounded corners. Dies funktioniert jedoch nicht mit den colorsauf Seite 149 des Handbuchs 3.1.1 angegebenen, die immer für die geltengesamter Pfad.

Screenshot der Seite 149:

Bildschirmfoto

Um es einfacher zu machen:

  • Ich habe zunächst das ABC-Dreieck orange eingefärbt mit dem \fillBefehl(das nichts zeichnet);
  • dann zeichnete ichzweiPfade, einer in blue, der andere in red.

Bildschirmfoto

Kommentierter Code:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \path[name path=A--B] (A) -- (B);% <-- construct the path, but not draw it
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \path [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  %\node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \fill[orange!80] (A) -- (B) -- (C) -- cycle;%<-- only fill without draw the edges
  \draw[blue,thick](A)--(B);%<-- draw in blue
  \draw[red,thick](A)--(C)--(B);%<-- draw in red
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

Antwort2

Sie können einige Ihrer Pfade speichern, indem Sie die Möglichkeiten des Befehls \pathoder nutzen \draw. Insbesondere die leeren Pfade können entfernt werden, indem die Schnittpunkte in die entsprechenden Pfade integriert werden.

Um von bis zu farblich vorzugehen, Aziehen BSie einfach eine Linie zwischen den beiden Punkten (nachdem Sie den Rahmen gezeichnet oder einfach entfernt haben). Dasselbe funktioniert für A--B--C.

Dreieck

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \path[name path=A--B] (0,0) coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) --
    (1.25,0.25) coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};
  \draw[name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}},
    name path=C--C',red] (C) -- (C');
  \node[fill=red,inner sep=1pt,name intersections={of=A--B and C--C', by=F},label=-45:$F$] at (F) {};

  \draw[draw=none,fill=orange!80] (A) -- (B) -- (C) -- cycle;
  \draw[blue,thick] (A) -- (B);
  \draw[red,thick] (A) -- (C) -- (B);

  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

verwandte Informationen