1、条形图绘制
绘制条形图可以分为二维和三维两种情况:bar(竖直条形图)、barh(水平条形图)、bar3(三维竖直条形图)、bar3h(三维水平条形图),这些情况的函数调用格式都是一样的:
bar(y):以y为分量分别显示高度,横坐标为[1,length(y)];若y为矩阵,情况类似;
bar(x,y):在指定的x上绘制y,其中x为严格的单增向量;
bar(...,width):width为组内条形的间距,默认值为0.8(很小间距),若设置width=1,则组内的条形相互接触;
bar(...,'style'):style指定排列的类型,有“group”(默认)和“stack”两种。若Y为m*n大小的矩阵,group表示每组有n个条形且有m组,stack表示有m个条形且每个颜色不同,每个条形的高度为该行向量的和。
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
figure(2);
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
2、饼图绘制
饼图是用来显示向量或矩阵中各元素所占比例。二维为pie,三维为pie3,调用格式类似。
pei(X):用X中的数据画出一个饼图。若sum(X)<1,则画出的饼图不完整;
pei(X,explode):将每一部分的扇区偏移一定的位置,其中explode是一个与X同维的矩阵,当所有元素为0的时候,各部分扇形将组成一个圆。
X = [528 718 624 859];
explode = [0 1 0 1];
pie3(X,explode);
title('三维分离饼图');
3、面积图绘制
面积图的绘制在实际中可以表现不同部分对整体的影响,其命令是area。
area(Y):绘制向量或者矩阵Y中的每一列作为单独的曲线并堆叠显示;
area(X,Y):绘制Y对X的图,填充0和Y之间的区域;
area(...,basevalue):basevalue指定区域填充的基值,默认为0。
Y = [45 4 6; 24 6 9; 19 4 3; 9 2 4; 25 8 15; 7 14 9];
area(Y);
grid on;
set(gca,'layer','top'); %将坐标的图层上移到顶层
title('面积图');
4、等高线的绘制
[C, h] = contour(x,y,g);
返回等高线矩阵C(包含定义等高线的数据)和Contour对象h。用x,y绘制z的等高线。
meshgrid函数: 产生两个数组:
一个是y列x行,每行都相同,每一列按顺序为(-5,-4.9,。。。。。,5)
一个是x行y列,每列都相同,每一行按顺序为(-3,-2.9,。。。。。,3)Τ
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3);
g = x.^2 + y.^2; %数组运算为要加 ‘.’
[C, h] = contour(x,y,g);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
% get(h,'LevelStep')*2,显示值为LevelStep的2倍的值,让画出来的等高线一条隔一条地显示
set和get是设置和获得句柄对象属性值的函数;
ShowText为on就是显示等高线的值,off就是不显示等高线的值,默认为off;
LevelStep为m就是显示值为m的倍数的等高线,显然m越大,所绘制的等高线就越稀疏;
TextStep为n就是显示值为n的倍数的等高线的值,其它等高线的值不显示;
5、极坐标绘制
极坐标系的坐标为 (ρ,θ)
polarplot 极坐标上按点进行绘图;
polarscatter 极坐标上绘制散点图;
polarhistogram 极坐标上绘制直方图;
compass 极坐标上绘制带箭头的图像;
ezpolar 极坐标上的函数绘图;
figure(1);
angle=0:0.1:2*pi;
length1=2*angle;
polarplot(angle,length1,'--r');
figure(2);
length2=sin(angle);
polarplot(angle,length2,':b');
%极坐标中不支持在绘图函数中设定自变量的范围,可调用函数rlim
figure(3);
polarplot(angle,length2,'b');
rlim([-1 1]);
figure(4);
polarscatter(angle,length1,'filled'); %不添加 filled 命令则默认为空心圆点
figure(5);
polarhistogram(length2) %直方图是对数据点进行统计,然后绘制频数
figure(6);
compass([1 0 0 -1],[0 1 -2 1]); %两个向量,第一个是四个横坐标,第二个是对应的纵坐标
%例如第一个箭头在平面坐标上(0,0)指向(1,0),转换到极坐标就是θ=0,ρ=1
figure(7);
ezpolar(@(angle)2*angle)
figure(8);
ezpolar(@sin);
6、三维图形的绘制
三维图形的绘制的函数格式大多类似于二维,只是在参数上多加了一个第三维的信息。
surf : 绘制曲面图 mesh : 绘制网格图
surfc: 绘制带等高线的曲面图 meshc: 绘制带等高线的网格图
meshz: 绘制带帷幕的网格图
fsurf: 绘制基于函数的曲面图 fmesh: 绘制基于函数的
上述函数的使用格式类似,仅拿mesh函数举例:
mesh(X,Y,Z):绘制三维网格图,颜色和曲面的高度相匹配;
mesh(Z):生成的网格图满足X=1:n与Y=1:m,[n,m]=size(Z);
mesh(Z,c):同mesh(Z),并进一步由c指定边的颜色。
x0=1:5;
y0=6:11;
[x,y]=meshgrid(x0,y0); %把两个向量转变为两个矩阵
z=x.^3+y.^3;
figure(1);
c=randi(20,size(z)); %设定一个颜色变量,其大小要和函数 z 相同
surf(x,y,z,c,'linestyle','--'); %对线条颜色设定时要通过 属性对linestyle 进行设置
colorbar; %插入颜色栏
figure(2);
h=surf(x,y,z); %获取图像的句柄
h.FaceAlpha=0.5; %调整透明度 1-完全不透明 0-完全透明
figure(3);
surfc(x,y,z); %下方的曲线就是等高线
figure(4);
mesh(x,y,z);
figure(5);
meshc(x,y,z);
figure(6);
meshz(x,y,z);
figure(7);
z=@(x,y)x.^3+y.^3;
h=fsurf(z); %会把数据点取的很密
h.EdgeColor=[1 0 0];
h.LineStyle=('--');
figure(8);
z=@(x,y)x.^3+y.^3;
fmesh(z);