MATLAB pie()函数:绘制饼状图(附带实例)
饼图用来显示向量或矩阵中各元素所占的比率,它可以用在一些统计数据的可视化中。
MATLAB 中在二维情况下,创建饼图的函数是 pie();在三维情况下,创建饼图的函数是 pie3(),二者的调用格式非常相似,因此我们只给出 pie() 函数的调用格式及说明,如下表所示。
【实例 1】对于如下矩阵:
抽取它的第一列绘制完整的饼图、分离的饼图。MATLAB 程序如下:

图 1 饼图
【实例 2】绘制矩阵的完整饼图、部分饼图。MATLAB 程序如下:

图 2 饼图显示
MATLAB 中在二维情况下,创建饼图的函数是 pie();在三维情况下,创建饼图的函数是 pie3(),二者的调用格式非常相似,因此我们只给出 pie() 函数的调用格式及说明,如下表所示。
调用格式 | 说明 |
---|---|
pie(X) | 用 X 中的数据画一张饼图,X 中的每一元素代表饼图中的一部分,X 中的每一个元素所代表的扇形大小通过 X(i)/sum(X) 的大小来决定。若 sum(X)≤1,则 X 中元素的值就直接指定了饼图扇区的面积。若 sum(X)<1,则画出一张不完整的饼图。 |
pie(X,explode) | 将扇区从饼图偏移一定位置。explode 是一个与 X 同维的矩阵,当所有元素为零时,饼图的各个部分将连在一起组成一个圆,而其中存在非零元时,X 中相对应的元素在饼图中对应的扇区将向外移出一些来加以突出。 |
pie(X,labels) | 指定扇区的文本标签。X 必须是数值数据类型。标签数必须等于 X 中的元素数。 |
pie(X,explode,labels) | 偏移扇区并指定文本标签。X 可以是数值数据或分类数据类型。为数值数据类型时,标签数必须等于 X 中的元素数;为分类数据类型时,标签数必须等于分类数。 |
pie(ax,...) | 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区(gca)中。 |
p = pie(...) | 返回一个由补片和文本图形对象组成的向量。 |
【实例 1】对于如下矩阵:

抽取它的第一列绘制完整的饼图、分离的饼图。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> Y=[45 6 8;7 4 7;6 25 4;7 5 8;9 9 4;2 6 8]; % 输入矩阵Y >> Y=Y(:,1)' % 抽取矩阵Y的第一列 Y = 45 7 6 7 9 2 >> subplot(1,3,1) % 将视图分割为1×3的窗口,显示视图1 >> pie(Y) % 绘制完整饼图 >> title('二维饼图') % 添加标题 >> subplot(1,3,2) % 将视图分割为1×3的窗口,显示视图2 >> pie(Y,[1 1 1 1 1 1]) % 偏移抽取的列元素对应的扇区 >> title('分离二维饼图') % 添加标题 >> subplot(1,3,3) % 将视图分割为1×3的窗口,显示视图3 >> p=pie(Y); % 绘制饼图,并返回饼图中由补片和文本图形对象组成的向量 >> t = p(4); % 获取饼图的第4个标签句柄 >> t.BackgroundColor = 'cyan'; % 设置标签背景底色 >> t.EdgeColor = 'red'; % 设置标签的轮廓颜色 >> t.FontSize = 14; % 设置标签的字体大小 >> title('设置标签样式的二维饼形图') %添加标题运行结果如下图所示:

图 1 饼图
【实例 2】绘制矩阵的完整饼图、部分饼图。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> X=[0.1 0.2 0.3 0.4]; % 创建向量X >> Y=X(2:4); % 抽取向量X的第2~4个元素 >> labels = {'1','2','3','4'}; % 定义饼图标签 >> labels1 = {'1','2','3'}; % 定义分割饼图标签 >> ax1 =subplot(1,2,1); % 创建一个坐标区对象ax1,便于修改坐标区 % 将坐标区对象ax1指定为绘图函数的输入,在特定的子图中绘制带指定标签的饼图 >> pie(ax1,X,labels) >> title(ax1,'完整'); % 添加标题 >> ax2 =subplot(1,2,2); % 创建一个坐标区对象ax2 % 将坐标区对象ax1指定为绘图函数的输入,在特定的子图中绘制带指定标签的分离饼图 >> pie(ax2,Y,labels1) >> title(ax2,'部分'); % 添加标题运行结果如下图所示:

图 2 饼图显示