3、图形保持
- hold on:控制保持原有图形
hold off:控制刷新图形窗口
hold on:用于在两种状态之间进行切换 - 例子:用图形保持功能绘制两个同心圆
4、图形窗口的分割
- 子图:同一图形窗口中的不同坐标系下的图形为子图
- subplot函数:subplot(m,n,p)
其中,m和n指定将图形窗口分成m*n个绘图区,p指定当前活动区。
x=linspace(0,2*pi,60); subplot(2,2,1) plot(x,sin(x)-1); title('sin(x)-1');axis ([0,2*pi,-2,0]) subplot(2,1,2) plot(x,cos(x)+1); title('cos(x)+1');axis ([0,2*pi,0,2]) subplot(4,4,3) plot(x,tan(x)); title('tan(x)');axis ([0,2*pi,-40,40]) subplot(4,4,8) plot(x,cot(x)); title('cot(x)');axis ([0,2*pi,-35,35])
三、其他形式的二维曲线
1、其他坐标系的二维曲线
(1)对数坐标图
semilogx(x1,y1,选项1,x2,y2,选项2,……)
semilogy(x1,y1,选项1,x2,y2,选项2,……)
loglog(x1,y1,选项1,x2,y2,选项2,……)
其中。semilogx函数x轴为常用对数刻度,y轴为线性刻度;semilogy函数x轴为线性刻度,y轴为常用对数刻度;loglog函数x轴和y轴均为常用对数刻度。
例子:绘制1/x的直角线性坐标图和三种对数坐标图
x=0:0.01:10; y=1./x; subplot(2,2,1); plot(x,y) title('plot(x,y)'); subplot(2,2,2); semilogx(x,y); title('semilogx(x,y)'); grid on; subplot(2,2,3); semilogy(x,y); title('semilogy(x,y)'); grid on; subplot(2,2,4); loglog(x,y); title('loglog(x,y)'); grid on;
(2)极坐标图
polar(theta,rho,选项)
其中,theta为极角,rho为极径,选项的内容与plot函数相同
例子:按极坐标方程ρ=1-sinθ绘制心形曲线
t = 0:pi/100:2*pi; r = 1-sin(t); subplot(1,2,1) polar(t,r) subplot(1,2,2) t1 = t-pi/2; r1 = 1-sin(t1); polar(t,r1)
2、统计图
(1)条形类图形
- 条形图
– bar函数:绘制垂直条形图
– barh函数:绘制水平条形图
bar函数:bar(y,style)
其中,参数y是数据,若y是向量则分别以每个元素的值作为每个矩形条的高度,以对应元素的下标作为横坐标。若y为矩阵则以y的每一行元素组成一组,用矩阵的行号作为横坐标分组绘制矩形条。选项style用于指定分组排列模式,类型有簇状分组:“grouped”和堆积分组:“stacked”,默认为簇状分组。
y=[1,2,3,4,5;1,2,1,2,1;5,4,3,2,1]; subplot(1,2,1); bar(y) title('簇状分组'); subplot(1,2,2) bar(y,'stacked') title('堆积分组')
bar函数:bar(x,y,style)
其中,x存储横坐标,y存储数据,y的行数要与x的长度相同。
例子:下表是某公司2015~2017年家电类商品1月份的销售数据,绘制条形图
冰箱 | 空调 | 洗衣机 | 电视机 | 油烟机 | |
2015 | 68 | 80 | 115 | 98 | 102 |
2016 | 75 | 88 | 102 | 99 | 110 |
2017 | 81 | 86 | 125 | 105 | 115 |
x=[2015,2016,2017]; y=[68,80,115,98,102; 75,88,102,99,110; 81,86,125,105,115]; bar(x, y) title('Group');
- 直方图
– hist函数:绘制直角坐标系下的直方图
– rose函数:绘制极坐标系下的直方图
hist函数:hist(y),hist(y,x)
其中,y是要统计的数据,x用于指定区间的划分方式。若x是标量,则统计区间均分成x个小区间;若x是向量,则向量x中的每一个数指定分组中心值,元素的个数为数据分组数。x缺省时,默认按10个等分区间进行统计。
y=randn(500,1); subplot(2,1,1); hist(y); title('高斯分布直方图'); subplot(2,1,2); x=-3:0.2:3; hist(y,x); title('指定区间中心点的直方图')
rose函数:rose(theta,x)
其中,theta用于确定每一区间与原点的角度,选项x用于指定区间的划分方式,x缺省时,默认按20个等分区间进行统计。
y=randn(500,1); theta=y*pi; rose(theta) title('在极坐标系下的直方图')
(2)面积类图形
- 扇子形图
pie函数:pie(x,explode)
其中,x存储待统计数据。选项explode控制图块的显示模式,对用非零值的部分将从图形分离处
例子:某次考试优秀、良好、中等、及格、不及格的人数分别为:5、17、23、9、4,试用扇形图统计,并凸显不及格的部分
score=[5,17,23,9,4]; ex=[0,0,0,0,1]; pie(score,ex) legend('优秀', '良好', '中等', '及格', '不及格', ... 'location', 'eastoutside') ##'location'用于指定函数位置, 'eastoutside'表示图例放置在绘图区域右边的外侧
- 面积图
area函数:方法与plot函数相同,只是将所得曲线下方区域填充颜色
(3)散点类图形 - scatter函数:散点图
scatter(x,y,选项,‘filled’)
其中,x、y用于定位数据点,选项用于指定线性、颜色、数据点标记。如果数据点标记是封闭图形,可以用选项‘filled’指定填充数据点标记。该选项省略时,数据点是空心的。
例子:以散点图形式绘制桃心曲线,曲线的参数方程如下:x=16(sint)^3 ;y=13cost-5cos2t-2cos3t-cos4t
t=0:pi/100:2*pi; x=16*sin(t).^3; y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t); subplot(1,2,1); scatter(x,y,'rd','filled') subplot(1,2,2); scatter(x,y,'rd')
- stairs函数:阶梯图
X = linspace(0,4*pi,50); Y = sin(X); stairs(X,Y)
- stem函数:杆图
X = linspace(0,2*pi,50)'; Y = cos(X); stem(X,Y)
3、矢量类图形
(1)compass函数:罗盘图
compass(U,V) 绘制从点 (0, 0) 发射出的箭头。使用笛卡尔坐标 U 和 V 指定箭头方向,其中 U 表示 x 坐标,V 表示 y 坐标。箭头数量与 U 中的元素数相匹配。
u = [5 3 -4 -3 5]; v = [1 5 3 -2 -6]; compass(u,v)
(2)feather函数:羽毛图
feather(U,V) 绘制以 x 轴为起点的箭头。使用笛卡尔分量 U 和 V 指定箭头方向,其中 U 表示 x 分量,V 表示 y 分量。第 n 个箭头的起始点位于 x 轴上的 n。箭头的数量与 U 和 V 中的元素数相匹配。
t = -pi/2:pi/8:pi/2; u = 10*sin(t); v = 10*cos(t); feather(u,v)
(3)quiver函数:箭头图
quiver(x,y,u,v)
其中,(x,y)指定矢量起点,(u,v)指定矢量终点。xx,y,u,v是同样大小的向量或同型矩阵,若省略x,y,则在x-y平面上均与取若干个点作为起点。
例:已知向量A、B,求A+B,并用矢量图表示。
A=[4,5]; B=[-10,0]; C=A+B; hold on; quiver(0, 0, A(1), A(2)); quiver(0, 0, B(1), B(2)); quiver(0, 0, C(1), C(2)); text(A(1),A(2),'A');text(B(1),B(2),'B'); text(C(1),C(2),'C'); axis ([-12, 6, -1, 6]) grid on
四、三维曲线
1、plot3函数
(1)基本用法:plot3(x,y,z)
其中,x,y,z组成一组曲线的坐标
例子:绘制一条空间折线
x=[0.2, 1.8, 2.5]; y=[1.3, 2.8, 1.1]; z=[0.4, 1.2, 1.6]; plot3(x,y,z) axis([0, 3, 1, 3, 0, 2]); grid on
例子:绘制螺旋曲线 x=sint+tcost;y=cost-tsint;z=t;(0≤t≤10Π)
t=linspace(0,10*pi,200); x=sin(t)+t.*cos(t); y=cos(t)-t.*sin(t); z=t; subplot(1,2,1) plot3(x,y,z) grid on subplot(1,2,2) plot3(x(1:4:200),y(1:4:200),z(1:4:200)) grid on
(2)plot3(X,Y,Z)
参数X,Y,Z是同型矩阵,以X,Y,Z对应列元素绘制曲线,曲线条数等于矩阵列数。
参数X,Y,Z中有向量,也有矩阵时,向量的长度应与矩阵相符。
t=0:0.01:2*pi; t=t.'; x=[t,t,t,t,t]; y=[sin(t),sin(t)+1,sin(t)+2,sin(t)+3,sin(t)+4]; z=t; plot3(x,y,z)
t=0:0.01:2*pi; x=t; y=[sin(t);sin(t)+1;sin(t)+2;sin(t)+3;sin(t)+4]; z=t; plot3(x,y,z)
(3)含多组输入参数的plot3
plot3(x1,y1,z1,x2,y2,z2,……,xn,yn,zn)
每一组x、y、z向量构成一组数据点的坐标,绘制一条曲线。
t1=0:0.01:1.5*pi; t2=0:0.01:2*pi; t3=0:0.01:3*pi; plot3(t1,sin(t1),t1, t2,sin(t2)+1,t2,t3,sin(t3)+2,t3)
(4)含选项的plot3
plot3(x,y,z,选项)
选项用于指定曲线的线型、颜色和数据点标记。
例子:绘制空间曲线x=cost;y=sint;z=2t;(0≤t≤6Π)
t=0:pi/50:6*pi; x=cos(t); y=sin(t); z=2*t; plot3(x,y,z,'p') xlabel('X'),ylabel('Y'),zlabel('Z'); grid on
2、fplot3函数
fplot3(funx,funy,funz,tlims)
其中,funx,funy,funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。tlmis为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5]。
例子:绘制墨西哥帽顶曲线,x=e(-t/10)sin5t;y=e(-t/10)cos5t;z=t;t∈[-12,12]
x=@(t) exp(-t/10).*sin(5*t); y=@(t) exp(-t/10).*cos(5*t); z=@(t) t; fplot3(x,y,z,[-12,12],'r')