Anzeige:
Ergebnis 1 bis 4 von 4

Thema: pgf-pie Schriftfarben

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.04.2007
    Beiträge
    20

    pgf-pie Schriftfarben

    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:

    Code:
    \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}
    Unbenannt.png

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.801
    eine relativ einfache Möglichkeit:
    Code:
    \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
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.801
    etwas komplizierter:
    Code:
    \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
    Rainer
    There's nothing a good whack with a hammer won't fix!

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.04.2007
    Beiträge
    20
    Cool! Danke Euch für die tolle Lösung!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •