How to label a pie diagram
조회 수: 10 (최근 30일)
이전 댓글 표시
Hi everyone, I have the following code: where I'm loading data from a spreadsheet, and outputting the data, the plot works fine but I can't figur out how to label a pie chart
a= sum (A(1:10,4)) b= sum (A(10:20,4)) c= sum (A(20:30,4)) d= sum (A(30:40,4)) e= sum (A(40:50,4)) f= sum (A(50:60,4)) g= sum (A(60:70,4)) h= sum (A(70:80,4)) i= sum (A(80:90,4)) j= sum (A(90:100,4)) k= sum (A(100:110,4)) l= sum (A(110:113,4))
y=[a,b,c,d,e,f,g,h,i,j,k,l]
x=0:10:112
subplot(2,2,1) bar(x,y),grid,xlabel('ages'),ylabel('number of people') title('number of people for ages') pause(1)
subplot(2,2,2) z= pie(y);
aa= sum (A(1:10,3)) bb= sum (A(10:20,3)) cc= sum (A(20:30,3)) dd= sum (A(30:40,3)) ee= sum (A(40:50,3)) ff= sum (A(50:60,3)) gg= sum (A(60:70,3)) hh= sum (A(70:80,3)) ii= sum (A(80:90,3)) jj= sum (A(90:100,3)) kk= sum (A(100:110,3)) ll= sum (A(110:113,3))
yy=[aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll]
pause(1) subplot(2,2,3) pie(yy)
a1= sum (A(1:10,2)) b1= sum (A(10:20,2)) c1= sum (A(20:30,2)) d1= sum (A(30:40,2)) e1= sum (A(40:50,2)) f1= sum (A(50:60,2)) g1= sum (A(60:70,2)) h1= sum (A(70:80,2)) i1= sum (A(80:90,2)) j1= sum (A(90:100,2)) k1= sum (A(100:110,2)) l1= sum (A(110:113,2))
pause(1)
yyy=[a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1] subplot(2,2,4) pie(yyy)
I found this: which says how to label a pie chart but I'm unsure how to use it.
Thanks for any help.
Labeling the Pie Chart The pie chart's labels are text graphics objects. To modify the text strings and their positions, first get the objects' strings and extents. Braces around a property name ensure that get outputs a cell array, which is important when working with multiple objects:
textObjs = findobj(h,'Type','text'); oldStr = get(textObjs,{'String'}); val = get(textObjs,{'Extent'}); oldExt = cat(1,val{:}); Create the new strings, and set the text objects' String properties to the new strings:
Names = {'Product X: ';'Product Y: ';'Product Z: '}; newStr = strcat(Names,oldStr); set(textObjs,{'String'},newStr) Find the difference between the widths of the new and old text strings and change the values of the Position properties:
val1 = get(textObjs, {'Extent'}); newExt = cat(1, val1{:}); offset = sign(oldExt(:,1)).*(newExt(:,3)-oldExt(:,3))/2; pos = get(textObjs, {'Position'}); textPos = cat(1, pos{:}); textPos(:,1) = textPos(:,1)+offset; set(textObjs,{'Position'},num2cell(textPos,[3,2]))
댓글 수: 0
채택된 답변
the cyclist
2013년 9월 1일
figure
pie([33 33 34],{'Pie','suck','charts'})
댓글 수: 2
the cyclist
2013년 9월 1일
This syntax is listed in both
doc pie
and
help pie
"pie(...,LABELS) is used to label each pie slice with cell array LABELS."
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!