Mercurial > forge
diff main/plot/pie.m @ 0:6b33357c7561 octave-forge
Initial revision
author | pkienzle |
---|---|
date | Wed, 10 Oct 2001 19:54:49 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/plot/pie.m Wed Oct 10 19:54:49 2001 +0000 @@ -0,0 +1,69 @@ +## Copyright (C) 1999 Daniel Heiserer +## +## This program is free software. +## +## This file is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this file; see the file COPYING. If not, write to the Free +## Software Foundation, 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +## pie(Y) +## Produce pie graph +## +## pie(Y,['label1';'label2';...;'labeln']); +## Produce labelled pie graph + +## AUTHOR: Daniel Heiserer <Daniel.heiserer@physik.tu-muenchen.de> +function pie(Y,desc) + + refinement=20; + ##refinement=5; + phi=0:refinement:360; + Yphi=abs(Y)/sum(abs(Y))*360; + Yphi=cumsum(Yphi); + + Yn=0:360/refinement:Yphi(1); + if Yn(length(Yn))~=Yphi(1) + Yn=[Yn,Yphi(1)]; + end + + held = ishold; + unwind_protect + patch([0,cos(Yn*2*pi/360)],[0,sin(Yn*2*pi/360)],num2str(1)); + hold on; + for jj=2:length(Y) + ## find how many degrees are inside the jj-th pie + ## which degrees + Yn=Yphi(jj-1):360/refinement:Yphi(jj); + if length(Yn)>0 + if Yn(length(Yn))~=Yphi(jj) + Yn=[Yn,Yphi(jj)]; + end + patch([0,cos(Yn*2*pi/360)],[0,sin(Yn*2*pi/360)],num2str(jj)); + else + + end + end + + ## reserve some place for a legend + axis([-1 2 -1 1]) + + ## ok assume we have some text here: + if nargin==2 + if length(Y)~=size(desc,1) + error('pie-data and pie-string mismatch'); + end + for jj=1:size(desc,1) + plot(0,0,[num2str(jj),';',desc(jj,:),';']); + end + end + unwind_protect_cleanup + if !held, hold off; end + end_unwind_protect +end + \ No newline at end of file