How to draw a true pie chart?

The centre of the wedges are all different, so the corresponding arcs, geometrically cannot be on the same circle. The closer these centres are from the origin, the closer the arcs are from an ideal circle,. So I decreased the distance of the centres from the origin, and cheated a bit with the polar angles of some of them. Please see if it's OK for you:

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

\begin{document}

\psset{unit=1.5cm,linejoin=1}
\begin{pspicture}(-2.1,-2.1)(2.1,2.1)
\SpecialCoor
\degrees[100]
%%%%
\rput(.03;8.5){\pswedge[fillstyle=solid,fillcolor=gray,hatchcolor=gray]{2}{0}{17}
\rput(1.2;8){\psframebox*{\small 17 \%}}}
%%%%
\rput(.03;29){\pswedge[fillstyle=hlines,fillcolor=gray,hatchcolor=gray]{2}{17}{42}
\rput(1.2;29){\psframebox*{\Large 25 \%}}}
%%%%%
\rput(.03;50){\pswedge[fillstyle=solid,fillcolor=lightgray,hatchcolor=gray]{2}{42}{58}
\rput(1.2;50){\psframebox*{\Large 16 \%}}}
%%%%
\rput(.03;70.5){\pswedge[fillstyle=hlines,fillcolor=gray,hatchcolor=gray]{2}{58}{83}
\rput(1.2;71){\psframebox*{\Large 25 \%}}}
%%%%
\rput(.03;90){\pswedge[fillstyle=solid,fillcolor=gray,hatchcolor=gray]{2}{83}{100}
\rput(1.2;92){\psframebox*{\Large 17 \%}}}
\psdot(0,0)
\end{pspicture}

\end{document}

enter image description here


It cannot be exactly on an outer circle!

\documentclass[border=10pt]{standalone}
\usepackage{pstricks-add}
\begin{document}
    \psset{unit=1.5cm,linejoin=1}
\begin{pspicture}(-2.1,-2.1)(2.1,2.1)
\degrees[100]%
%%%%
\pswedge[fillstyle=solid,fillcolor=gray,hatchcolor=gray](0.05;8.5){2}{0}{17}
    \rput*(1.2;8){\small 17 \%}%
%%%%
\pswedge[fillstyle=hlines,fillcolor=gray,hatchcolor=gray](0.05;29.5){2}{17}{42}
    \rput*(1.2;29){\Large 25 \%}%
%%%%%
\pswedge[fillstyle=solid,fillcolor=gray,hatchcolor=gray](0.05;50){2}{42}{58}
    \rput*(1.2;50){\Large 16 \%}
%%%%
\pswedge[fillstyle=hlines,fillcolor=gray,hatchcolor=gray](0.05;70.5){2}{58}{83}
    \rput*(1.2;71){\Large 25 \%}
%%%%
\pswedge[fillstyle=solid,fillcolor=gray,hatchcolor=gray](0.05;-8.5){2}{83}{100}
    \rput*(1.2;92){\Large 17 \%}
\psdot(0,0)
\end{pspicture}
\end{document}

enter image description here

Tags:

Pstricks