PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgf-pie Schriftfarben



technman
17-10-2019, 19:20
Hallo zusammen,
ich kämpfe gerade mit den Schriftfarben in pgf-pie.
Ich möchte ein Kreisdiagramm erstellen, bei dem in den hellen Bereichen schwarze Schriftfarbe, und in den dunklen Bereichen weiße Schriftfarbe verwendet wird.
Beim googeln habe ich nur gefunden wie man die Schriftfarbe komplett umstellt. Hat irgendwer eine Idee, wie ich vorgeben kann in welchem Segment ich welche Schriftfarbe haben möchte?

Hier mal ein Minimalbeispiel:



\documentclass{article}
\usepackage{pgf-pie,etoolbox}

\makeatletter
\patchcmd\pgfpie@slice
{node {\scalefont{#3}\beforenumber#3\afternumber}}
{node[/every only number node/.try] {\scalefont{#3}\beforenumber#3\afternumber}}{}{}
\makeatother

\begin{document}
\begin{tikzpicture}[scale=0.9]
\pie[
/tikz/every pin/.style={align=center},
every only number node/.style={text=white},
text=pin,
rotate=240,
explode=0.2,
color={blue!70,cyan!70,red!70,orange!50}
] {65/Klavier, 10/E-Bass,17.5/Schlagzeug, 7.5/Gitarre}
\end{tikzpicture}

\end{document}



6277

rais
18-10-2019, 11:13
eine relativ einfache Möglichkeit:


\documentclass{article}
\usepackage{pgf-pie,etoolbox}

\makeatletter
\patchcmd\pgfpie@slice
{node {\scalefont{#3}\beforenumber#3\afternumber}}
{node[-\thecolor, /every only number node/.try] {\scalefont{#3}\beforenumber#3\afternumber}}{}{}
\makeatother

\begin{document}
\begin{tikzpicture}[scale=0.9]
\pie[
/tikz/every pin/.style={align=center},
% every only number node/.style={text=white},
text=pin,
rotate=240,
explode=0.2,
color={blue!70,cyan!70,red!70,orange!50}
] {65/Klavier, 10/E-Bass,17.5/Schlagzeug, 7.5/Gitarre}
\end{tikzpicture}

\end{document}

dabei nehme ich die Farbe vom "Tortenstück" (\thecolor), invertiere sie (-) und färbe damit den Node...

VG

rais
18-10-2019, 20:51
etwas komplizierter:


\documentclass{article}
\usepackage{pgf-pie,etoolbox}

\makeatletter
\newcommand*\split@colors{}
\def\split@colors#1/#2/#3{%
\xdef\thecolor{#1}%
\ifx\relax#2\relax
\xdef\thetxtcolor{black}%
\else
\xdef\thetxtcolor{#2}%
\fi
}
\patchcmd\pgfpie@findColor{\xdef\thecolor{\c}}
{\expandafter\split@colors\c//}
{}{\typeout{Could not patch \string\pgfpie@findColor. Strange things may happen...}}

\patchcmd\pgfpie@slice
{node {\scalefont{#3}\beforenumber#3\afternumber}}
{node[\thetxtcolor, /every only number node/.try] {\scalefont{#3}\beforenumber#3\afternumber}}{}{}
\makeatother

\begin{document}
\begin{tikzpicture}[scale=0.9]
\pie[
/tikz/every pin/.style={align=center},
text=pin,
rotate=240,
explode=0.2,
color={blue!70/white,cyan!70,red!70,orange!50/blue!60!black}
] {65/Klavier, 10/E-Bass,17.5/Schlagzeug, 7.5/Gitarre}
\end{tikzpicture}

\end{document}

so lassen sich bei der color-Option Farbpaare angeben in der Form
color={f1[/t1],f2[/t2],...}, wobei die zweite Farbe für den Text auch weggelassen werden kann (default ist schwarz).

VG

technman
20-10-2019, 09:47
Cool! Danke Euch für die tolle Lösung!:)