7.子图绘制
即在同一个图形窗口中同时绘制多幅相互独立的子图
- subplot(m,n,k):将m*n幅子图中的第k幅图作为当前曲线的绘制地点。此种方法最为常用
- subplot(‘position’,[left bottom width heigth]):在指定位置上生成子图。宽高取值范围均为[0,1],左下角坐标为(0,0)
8.交互式绘图
这里交互式绘图是指利用鼠标操作的图形操作指令
- [x,y] = ginput(n):用鼠标从二维图形中获得n个点的坐标数据。只能应用于二维图形
- gtext(‘text’):用鼠标把字符串或字符串元胞数组放置到图形中作为文字说明。可应用于二维图形以及三维图形
- zoom xon:规定当前图形的x轴可以进行缩放。可应用于二维图形以及三维图形(zoom指令)
- zoom yon:规定当前图形的y轴可以进行缩放
- zoom on:规定当前图形可以进行缩放
- zoom off:规定当前图形不可以进行缩放
- zoom:在是否可以缩放之间进行切换
- zoom out:使图形回归原始状态
- zoom(factor):设置缩放变焦因子。默认为2
9.双坐标轴绘制
双坐标轴常被用来解决表示同一变量在两个不同量纲、不同量级的函数量的变化在同一图窗下显示的情况
- plotyy(X1,Y1,X2,Y2):以左、右不同的纵轴分别绘制X1-Y1、X2-Y2两条曲线
- plotyy(X1,Y1,X2,Y2,fun):以左、右不同的纵轴以fun指定的形式分别绘制X1-Y1、X2-Y2两条曲线
- plotyy(X1,Y1,X2,Y2,fun1,fun2):左、右不同的纵轴分别以fun1,fun2指定的形式分别绘制X1-Y1、X2-Y2两条曲线
- 注:左侧的轴线用来描述X1-Y1曲线,右侧的轴线用来描述X2-Y2曲线。轴的范围与刻度值都是自动生成的,若需要人共设置,则与一般绘图指令相同
1 2 3 4 5 |
figure angl = 0 : 0.01*pi : 2*pi; ampl = sin(0 : 0.01*pi : 2*pi); z = ampl.*(cos(angl) + sqrt(-1)*sin(angl)); [AX,H1,H2] = plotyy(0:200, abs(z), 0:200, angle(z)*180/pi); |
10.fplot指令
plot指令是将用户指定或计算得到的数据转换为图形。若自变量的离散间隔不合理,其无法反应出函数的变化趋势
fplot则通过MATLAB平台内部设置的自适应算法来动态决定自变量的离散间隔。
当函数值变化缓慢时,离散间隔变大;反之变小
- fplot(fun,limits):在limits定义的自变量的取值范围[xmin,xmax]内,或者在自变量与因变量的取值范围[xmin,xmax;ymin,ymax]内,绘制fun函数
- fplot(fun,limits,LineSpec):在limits定义的取值范围内,在LineSpec所规定的线型、颜色、标记等属性下,绘制fun函数
- fplot(fun,limits,tol):在limits定义的取值范围内,在tol规定的相对误差允许范围内,绘制fun函数
- fplot(fun,limits,tol,LineSpec):在limits定义的取值范围内,在tol规定的相对误差允许范围内,在LineSpec所规定的线型、颜色、标记等属性下,绘制fun函数
- fplot(fun,limits,n):在limits定义的取值范围内绘制fun函数,至少绘制n+1个点
注意:tol为相对允许误差范围,默认值为2e-3。 n的默认值为1,即fplot最小绘制两个点,其最大步长限制为(xmax-xmin)/n
1 2 3 4 5 |
fplot(@sin,[-2*pi 2*pi]) grid on title('sin(x) from -2\pi to 2\pi') xlabel('x') ylabel('y') |
11.ezplot绘图指令
ezplot指令用于绘制函数在某一自变量区域内的图形,其也需要对自变量的范围进行规定
- ezplot(f)
- ezplot(f, [min, max])
- ezplot(f,[xmin, xmax, ymin, ymax])
- ezplot(x, y)
- ezplot(x, y, [min, max])
1 2 |
ezplot('sin(x)^2 + 4*cos(y)^2 = 4', [-5 5 -1 1]) % axis square |
12.特殊坐标轴绘制
为解决数据为对数时的问题,MATLAB中提供了3个函数
semilogx:用法与plot相同
- semilogx(Y)
- semilogx(X1, Y1, X2, Y2, …)
- semilogx(X1, Y1, LineSpec1, X2, Y2, LineSpec2, …)
semilogx函数与plot对比
1 2 3 4 |
x = 10.^(0.1 : 0.1 : 4); y = 1./(x+1000); figure subplot(1,2,1);semilogx(x,y,'+');title('y = (x+1000)^{-1}') subplot(1,2,2);plot(x,y,'+');title('y = (x+1000)^{-1}') |
13.二维特殊图形函数
bar函数用来绘制二维垂直条形图,用垂直条型显示向量或矩阵中的值
- bar(y):为y中的元素画一个条形图
- bar(x,y):在指定的横坐标x上画出y,其中x为严格单增的向量。若y为矩阵,则bar把矩阵分解成几个行向量,在指定的横坐标出分别画出
- bar(…, ‘color’):‘color’定义条的颜色
1 2 3 4 5 6 7 |
x = -2:2; y = magic(5); subplot(1,2,1), bar(x', y', 'stacked') xlabel('x'), ylabel('y'),colormap(cool) legend('因素1','因素2','因素3') subplot(1,2,2), barh(x', y', 'grouped') xlabel('y'), ylabel('x') |
pie函数用来绘制饼状图
- pie(x):绘制x的饼状图
- pie(x,explode):explode是与x同维的矩阵,若其中有非零元素,x矩阵中相应的位置的元素在饼图中对应的扇形将向外突出
- pie(…, labels):labels用于定义相应块的标签
- pie(axes_handle, …):将图形绘制到坐标轴句柄axes_handle中,而不是当前坐标轴句柄
- h = pie(…):返回绘制饼图的句柄
1 2 3 4 5 6 7 8 |
close all x = [1 5 0.5 3.5 2]; explode = [0 1 0 0 0]; pie(x, explode) colormap jet figure pie3(x,explode) %绘制三维饼图 clolrmap hsv |
hist函数用于绘制二维条型直方图。直方图可以显示数据的分布情况
- n = hist(y):把y中的元素放入等距的是个条形中,且返回每一个条形中的元素个数
- n = hist(y,x):参量x为向量,把y中元素放到m(m = length(x))个由x中元素指定的位置为中心的条形中
- n = hist(y,nbins):参量nbins为标量,用于指定条形的数目
- [n,out] = hist(…):返回向量n与包含频率计数与条形的位置向量xout,用户可以用命令bar(xout,n)画出条形直方图
- hist(…):生成直方图,但不输出
- hist(axes_handle, …):将图形绘制到坐标轴句柄axes_handle中,而不是当前坐标轴句柄
1 2 3 |
x = -4 : 0.1 : 4; y = randn(5000,1); hist(y,x) |
scatter函数用于绘制散点图
- scatter(x,y):以x、y的值为横纵坐标,绘制散点图
1 2 3 4 5 |
figure x = randn(8,1); y = randn(8,1); subplot(121);scatter(x,y); subplot(122);scatter(x,y,[],[1 0 0],'fill') |
转载请注明:燕骏博客 » MATLAB自学笔记(十五):二维图形绘制2
赞赏作者微信赞赏支付宝赞赏