科研菜鸟分享 http://blog.sciencenet.cn/u/sanshiphy 聚沙成塔,集腋成裘 leilphy@gmail.com

博文

Matlab: 画饼图和柱状图

已有 16334 次阅读 2011-6-30 12:43 |个人分类:技术备忘录|系统分类:科研笔记| 柱状图, 饼图

    前一段时间应翠的要求,帮她用Matlab画了几张饼图和柱状图。本来用Matlab随便画画,是很简单的事情,但她们学文科的要求就是多,一会儿要求色彩丰富,一会要求背景明暗突出,以显示立体感,结果把科学作图整的跟画画似的,因此费了我不少劲。现将代码共享出来,供与我有同样情况的男同胞们参考。

Matlab画饼图很容易,代码示例如下:
clear;clc;
% 表二:民族
mingzhu=[117 64 33 18 8];
explode = [1 0 0 0 0];
ph=pie3(mingzhu,explode); % 参数explode表明将值等于1的饼切割出来显示
legend(ph(2:4:end),{'壮族','仫佬族','瑶族','汉族','毛南族'});
close(gcf);clear ph;

画色彩丰富的柱状图较为复杂,代码示例如下:
clear;clc;
%% 表三
N=[171 160 212 197 192 200 198];
h=bar3(N);

%%%%% 这一段代码是在网上搜索得到的,并非自己的原创,但出处记不得了%%%%
%%%%%% 该代码用来实现不同的柱子用不同的颜色显示%%%% 
cm = get(gcf,'colormap');  % Use the current colormap.
cnt = 0;
for jj = 1:length(h)
    xd = get(h(jj),'xdata');
    yd = get(h(jj),'ydata');
    zd = get(h(jj),'zdata');
    delete(h(jj))    
    idx = [0;find(all(isnan(xd),2))];
    if jj == 1
        S = zeros(length(h)*(length(idx)-1),1);
        dv = floor(size(cm,1)/length(S));
    end
    for ii = 1:length(idx)-1
        cnt = cnt + 1;
        S(cnt) = surface(xd(idx(ii)+1:idx(ii+1)-1,:),...
                         yd(idx(ii)+1:idx(ii+1)-1,:),...
                         zd(idx(ii)+1:idx(ii+1)-1,:),...
                         'facecolor',cm((cnt-1)*dv+1,:));
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ylabel('统计量')
zlabel('人数')

%%%%%% 这一段代码用来调整视角 %%%%%%
az = 100;
el = 10;
view(az, el);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%% 这一段代码用来加入灰色背景 %%%%%
X=[1.4;0.7;0.7;1.4];Y=[8;8;0;0];Z=[0;0;0;0];
patch(X,Y,Z,[0.7 0.7 0.7])
X=[1.4;0.7;0.7;1.4];Y=[8;8;8;8];Z=[0;0;250;250];
patch(X,Y,Z,[0.8 0.8 0.8],'FaceAlpha',0.4)
X=[0.7;0.7;0.7;0.7];Y=[8;8;0;0];Z=[0;250;250;0];
patch(X,Y,Z,[0.8 0.8 0.8],'FaceAlpha',0.4)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

set(gca,'YTickLabel',{'A','B','C','D','E','F','G'});
text(0.9,1.1,181,'171')
text(0.9,2.1,170,'160')
text(0.9,3.1,222,'212')
text(0.9,4.1,207,'197')
text(0.9,5.1,202,'192')
text(0.9,6.1,210,'200')
text(0.9,7.1,208,'198')
close(gcf);



https://blog.sciencenet.cn/blog-200199-460808.html

上一篇:收藏《徐霞客游记校注》
下一篇:Matlab:更改坐标轴的刻度值
收藏 IP: 159.226.234.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-20 18:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部