Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I've gone through the answer in Package for pie charts.

Can you please suggest, how to give different color for each pie?

share|improve this question
2  
You might want to have a look here: gamedev.stackexchange.com/q/46463/22860 –  d33tah Dec 23 '13 at 19:24

3 Answers 3

up vote 8 down vote accepted
\documentclass{article}

\usepackage{calc}
\usepackage{ifthen}
\usepackage{tikz}
\begin{document}
\newcommand{\slice}[5]{ %% use 5 arguments here
  \pgfmathparse{0.5*#1+0.5*#2}
  \let\midangle\pgfmathresult

  % slice %% I changed !10 to !30 to get darker color
  % use the fifth argument #5 to pass the color  
  \draw[thick,fill=#5!30] (0,0) -- (#1:1) arc (#1:#2:1) -- cycle;

  % outer label
  \node[label=\midangle:#4] at (\midangle:1) {};

  % inner label
  \pgfmathparse{min((#2-#1-10)/110*(-0.3),0)}
  \let\temp\pgfmathresult
  \pgfmathparse{max(\temp,-0.5) + 0.8}
  \let\innerpos\pgfmathresult
  \node at (\midangle:\innerpos) {#3};
}

\begin{tikzpicture}[scale=3]

\newcounter{a}
\newcounter{b}
%% -------------- use the new variable \c to pass the color
\foreach \p/\t/\c in {20/type A/red, 4/type B/blue, 11/type C/red,
                   49/type D/green, 16/other/yellow}
  {
    \setcounter{a}{\value{b}}
    \addtocounter{b}{\p}
    \slice{\thea/100*360}
          {\theb/100*360}
          {\p\%}{\t}{\c}  %% here we use the fifth variable
  }

\end{tikzpicture}

\end{document}

enter image description here

share|improve this answer
    
Thank You Sigur for solution. –  Pawan Mude Dec 23 '13 at 13:39

Just for fun with PSTricks.

\documentclass[pstricks,border=12pt,10pt]{standalone}
\SpecialCoor

\newcounter{sum}
\addtocounter{sum}{0}

\psset{fillstyle=solid,opacity=.5,linejoin=1}
\degrees[100]

\newcommand\Item[3][red]{%
    \pstVerb{/IA \thesum\space def /FA IA #2 add def}%
    \pswedge[fillcolor=#1]{3}{!IA}{!FA}%
    \uput{1.5}[!IA FA add 2 div](0,0){\scriptsize #2\%}%
    \uput{3.2}[!IA FA add 2 div](0,0){#3}%
    \addtocounter{sum}{#2}%
    \ignorespaces
}

\begin{document}
\begin{pspicture}(-4,-4)(4,4)
\Item{20}{type A}
\Item[blue]{4}{type B}
\Item{11}{type C}
\Item[green]{49}{type D}
\Item[yellow]{\the\numexpr100-\thesum\relax}{other}
\end{pspicture}
\end{document}

enter image description here

share|improve this answer
1  
My answer for another simpler question can be found here. –  cyanide-based food Dec 23 '13 at 20:11
    
Thanks You SIR. –  Pawan Mude Dec 26 '13 at 6:13

with chartColor=color you'll get the predefined colors instead of the user defined.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}

\begin{document}
 \psset{unit=1.5}
 \begin{pspicture}(-3,-3)(3,3)
 \psChart[userColor={red!40,green!50,blue!40,gray,cyan!50,
 magenta!80,cyan},chartSep=30pt,shadow=true,shadowsize=5pt
]{20,4,11,49,16}{3}{2}
 \psset{nodesepA=5pt,nodesepB=-10pt}
 \ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{20\%}
 \ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{4\%}
 \ncline{psChartO3}{psChart3}\nput{90}{psChartO3}{11\%}
 \ncline{psChartO4}{psChart4}\nput{-90}{psChartO4}{49\%}
 \ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{16\%}
 \bfseries%
 \rput(psChartI1){type A}\rput[b](psChartI2){type B}
 \rput[t](psChartI3){type C}
 \rput(psChartI4){type D}\rput(psChartI5){other}
 \end{pspicture}
\end{document}

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.