Matlab绘制圆饼统计图pie的用法详解

一、引言

在做数据可视化过程中,圆饼统计图因其直观效果好而被广泛采用。Matlab提供了pie和pie3来绘制圆饼统计图。为了让圆饼统计图显示的显示信息更丰富,可以增加某一块的分离突出显示,也可以显示数据项的标识符,或者突出显示某个数据项的标识符。

二、pie

基本语法:

pie(X)
pie(X,labels)
pie(X,explode)
pie(X,explode,labels)

其中X表示已知的数据,explode表示哪个或哪几个数据项需要突出显示,labels表示每个数据项的标识字符串,必须是字符向量元胞数组。
示例1:已知一组数据中每个数据项的次数,根据数据项的次数绘制预案并统计图

t=[ 1 5 3 ]
pie(t)

运行结果为:
在这里插入图片描述
示例2:在示例1的基础上增加数据项的标识

t=[ 1 5 3 ]
label = { 'dog', 'hot', 'log' };%此处必须是细胞数组 
pie( t, label )

运行结果为:
在这里插入图片描述
此时可以看到示例1运行结果中的百分比换为了数据项的标识。
示例3:在示例2的基础上突出显示第1项数据项的标识

t=[ 1 5 3 ]
label = { 'dog', 'hot', 'log' };%此处必须是细胞数组 
h = pie( t, label )%画图同时获得图形句柄
%对第一个数据项的标识进行突出显示
s = h(2);%对本题,句柄实际包含6项,其中偶数项是数据项的标识
s.BackgroundColor = 'b';
s.EdgeColor = 'r';
s.FontSize = 20;

运行结果为:

在这里插入图片描述
示例4:在示例1的基础上增加数据项3的突出显示

t=[ 1 5 3 ] 
ex = [ 0, 0, 1 ];%非0的位置突出显示
pie( t, ex )

运行结果为:
在这里插入图片描述
从运行结果可以看出数据项3突出显示了。

示例5:在示例2的基础上增加数据项1的突出显示

t=[ 1 5 3 ]
label = { 'dog', 'hot', 'log' };%此处必须是细胞数组 
ex = [ 1, 0, 0 ];%非0的位置突出显示
pie( t, ex, label )

运行结果为:
在这里插入图片描述
从运行结果可以看出数据项1突出显示了。

示例6:给定一组数据(数值型),统计其中没个数据项出现的次数,据此绘制圆饼统计图,
1)首先随机生成一组数据,并取整

t = rand( 1, 20 );
t = fix(t * 10);

2)统计不同的数据及其出现的次数

ua =  unique(t) %统计不同的数据
stat = hist( t, ua ) %统计每个数据出现的次数

3)绘制圆饼统计图

pie( stat )

4)在圆饼统计图上显示每个数据项的数字

utC = string( ut ) %将ut转换成字符串数组
dataC = cellstr( utC )%将字符串转换成字符向量元胞数组

5)绘制带有标识的圆饼统计图

pie( stat, utC )

6)指定某第三分之一位置的数据项突出显示

len = length( ut )
ex = zeros( size(ut) );
loc = fix( len / 3 )
ex( loc ) = 1;
pie( stat, ex, utC )

7)完整代码及运行结果如下:

clear all
clc
format compact
t = rand( 1, 20 );
t = fix(t * 10);
ut =  unique(t) 
stat = hist( t, ut ) 
pie( stat )
figure;
utC = string( ut )
dataC = cellstr( utC )
pie( stat, utC )
figure;
len = length( ut )
ex = zeros( size(ut) );
loc = fix( len / 3 )
ex( loc ) = 1;
pie( stat, ex, utC )

运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、pie3

其用法与pie用法一样,只是显示结果是三维图。
示例7:把示例2和示例4改用pie3实现

clear all
clc
t=[ 1 5 3 ]
label = { 'dog', 'hot', 'log' };%此处必须是细胞数组 
h1 = pie3( t, label )%画图同时获得图形句柄
%对第一个数据项的标识进行突出显示
s = h1(4);%对本题,句柄实际包含12项,其中第4、8、12项是数据项的标识
s.BackgroundColor = 'b';
s.EdgeColor = 'r';
s.FontSize = 20;

figure;
ex = [ 0, 0, 3 ];%非0的位置突出显示
h2 = pie3( t, ex, label )
%对第三个数据项的标识进行突出显示
s = h2(12);
s.BackgroundColor = 'y';
s.EdgeColor = 'r';
s.FontSize = 20;

运行结果:

在这里插入图片描述
在这里插入图片描述

### 使用Matlab绘制饼图 在Matlab中,`pie`函数被用来创建饼图,这是一种展示数据相对比例的有效工具[^1]。下面是一个简单的例子,展示了如何利用该函数来制作一个基本的饼图。 #### 基本语法 要创建一个饼图,只需调用`pie`并传入表示各部分大小的数据向量作为参数即可: ```matlab data = [25, 30, 45]; % 数据集 figure; % 创建新图形窗口 pie(data); % 绘制饼图 title('简单饼图'); % 添加标题 ``` 此段代码会生成一个由三个扇区组成的饼图,每个扇区代表输入数组中的一个数值,并按照这些数值得到的比例分配给定的角度范围[^2]。 #### 自定义标签与颜色 为了使图表更加清晰易懂,还可以为各个切片指定名称以及自定义它们的颜色: ```matlab labels = {'类别A', '类别B', '类别C'}; colors = ['r'; 'g'; 'b']; % 调整属性设置 h = pie(data); set(h(1),{'FaceColor'},num2cell(colors)); legend(labels,'Location','best'); title('带标签和颜色的饼图'); ``` 这里使用了`set`命令修改默认外观,并通过`legend`添加了一个说明框以便识别不同类别的含义[^3]。 #### 显示百分比值 如果希望在图表上直接显示出每一片所占总和的具体百分比,则可以通过额外选项做到这一点: ```matlab explode = [0 0.1 0]; % 控制某些片段是否突出显示 percentages = num2str(round((data./sum(data))*100)) + '%'; hp = pie(data, explode); for i = 1:length(percentages) text(real(hp(i).XData)+sign(cosd(angle(hp(i).Centroid)))*0.1,... imag(hp(i).YData)+sign(sind(angle(hp(i).Centroid)))*0.1,... percentages{i},... 'HorizontalAlignment','center',... 'VerticalAlignment','middle'); end title('带有百分比标注的饼图'); ``` 上述脚本不仅设置了爆炸效果(即让特定的部分稍微分离出来),还计算出了各自占比并将结果显示于对应位置附近。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值