欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MATLAB04:基础绘图

程序员文章站 2022-05-28 22:06:56
...

学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档

图线的绘制与装饰

使用plot()函数绘制图线

在MATLAB中,使用plot()函数绘制图线,其语法为:

plot(x,y,LineSpec)

各参数意义如下:

  • x: 图线上点的x坐标

  • y: 图线上点的y坐标

  • LineSpec: 图线的线条设定,三个指定线型,标记符号颜色设定符组成一个字符串,设定符不区分先后.具体细节请参考官方文档.

    线型符号 线型设定符 标记 标记设定符 颜色 颜色设定符
    - 实线(默认) o 圆圈 y 黄色
    -- 虚线 + 加号 m 品红色
    : 点线 * 星号 c 青蓝色
    -. 点划线 . r 红色
    x 叉号 g 绿色
    s 方形 b 蓝色
    d 菱形 w 白色
    ^ 上三角 k 黑色
    v 下三角
    > 右三角
    < 左三角
    p 五角形
    h 六角形

下面例子演示了绘制(0,2π)(0, 2\pi)内余弦函数的图像:

x = 0:pi/20:2*pi;
y = cos(x);
plot(x, y, 'r.-')

MATLAB04:基础绘图

装饰图线

  • 使用legend()函数为图片增加图例

    使用legend(label1, ..., labelN)函数可以为图片添加图例.

    x=0:0.5:4*pi;
    y=sin(x); h=cos(x); w=1./(1+exp(-x)); g=(1/(2*pi*2)^0.5).*exp((-1.*(x-2*pi).^2)./(2*2^2));
    plot(x,y,'bd-' ,x,h,'gp:',x,w,'ro-' ,x,g,'c^-');		% 绘制多条图线
    legend('sin(x)','cos(x)','Sigmoid','Gauss function');	% 添加图例
    

    MATLAB04:基础绘图

  • 使用title()*label()为图片增加标题和标签

    x = 0:0.1:2*pi; y1 = sin(x); y2 = exp(-x);
    plot(x, y1, '--*', x, y2, ':o');
    xlabel('t = 0 to 2\pi');
    ylabel('values of sin(t) and e^{-x}')
    title('Function Plots of sin(t) and e^{-x}');
    legend('sin(t)','e^{-x}');
    

    MATLAB04:基础绘图

  • 使用text()annotation()为图片增加注解

    x = linspace(0,3); y = x.^2.*sin(x); plot(x,y);
    line([2,2],[0,2^2*sin(2)]);
    str = '$$ \int_{0}^{2} x^2\sin(x) dx $$';
    text(0.25,2.5,str,'Interpreter','latex');
    annotation('arrow','X',[0.32,0.5],'Y',[0.6,0.4]); 
    

    MATLAB04:基础绘图

控制坐标轴,边框与网格

使用下列命令可以控制坐标轴,边框与网格.

命令 作用
grid on/off 设置网格可见性
box on/off 设置边框可见性
axis on/off 设置坐标轴可见性
axis normal 还原默认行为,将图框纵横比模式和数据纵横比模式的属性设置为自动
axis square 使用相同长度的坐标轴线。相应调整数据单位之间的增量
axis equal 沿每个坐标轴使用相同的数据单位长度
axis tight 将坐标轴范围设置为等同于数据范围,使轴框紧密围绕数据

下面的例子演示axis命令的效果:

t = 0:0.1:2*pi; x = 3*cos(t); y = sin(t);
subplot(2, 2, 1); plot(x, y); axis normal
subplot(2, 2, 2); plot(x, y); axis square
subplot(2, 2, 3); plot(x, y); axis equal
subplot(2, 2, 4); plot(x, y); axis equal tight

MATLAB04:基础绘图

绘制多条图线

在一个图像上绘制多条图线

默认情况下,每次执行plot()函数都会清除上一次绘图的结果,多次执行plot()只会保留最后一次绘制的图形.

plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));

MATLAB04:基础绘图

我们可以使用hold onhold off命令控制绘图区域的刷新,使得多个绘图结果同时保留在绘图区域中.

hold on		% 提起画笔,开始绘制一组图片			
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));
hold off	% 放下画笔,该组图片绘制完毕

MATLAB04:基础绘图

在一个窗口内绘制多个图像

使用subplot()函数可以在一个窗口内绘制多个图像.其语法为:

subplot(m,n,p)

该命令表示将当前图窗划分为m×n个网格,并在第p个网格内绘制图像.

示例如下:

subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

MATLAB04:基础绘图

图形对象的操作

在MATLAB中,图形都是以对象的形式储存在内存中,通过获取其图形句柄可以对其进行操作.

MATLAB04:基础绘图

获取图形句柄

图形句柄本质上就是一个浮点数,可以唯一确定一个图形对象.下面几个函数用于获取图形句柄.

Function Purpose
gca() 获取当前坐标轴的句柄
gcf() 获取当前图像的句柄
allchild(handle_list) 获取该对象的所有子对象的句柄
ancestor(h,type) 获取对象最近的type类型的祖先节点
delete(h) 删除某对象
findall(handle_list) 获取该对象的后代对象

所有绘图函数也会返回图形对象的句柄.

MATLAB04:基础绘图

通过图形句柄操作图形属性

使用get()set()函数可以对图形对象的属性进行访问和修改.访问官方文档可以查看所有图形对象的属性.

  • set(H,Name,Value)
  • v = get(h,propertyName)

MATLAB04:基础绘图

下面两个例子演示使用图形句柄操作图形对象:

  1. 改变坐标轴属性:

    % 第一张图
    set(gca, 'FontSize', 25);
    
    % 第二张图
    set(gca, 'XTick', 0:pi/2:2*pi);
    set(gca, 'XTickLabel', 0:90:360);
    
    % 第三张图
    set(gca, 'FontName', 'symbol');
    set(gca, 'XTickLabel', {'0', 'p/2', 'p', '3p/2', '2p'});
    

    MATLAB04:基础绘图

  2. 改变线型

    h = plot(x,y); 
    set(h, 'LineStyle','-.', ...
    	'LineWidth', 7.0, ...
    	'Color', 'g');
    

    MATLAB04:基础绘图

将图形保存到文件

使用saveas(fig,filename)命令可以将图形对象保存到文件中,其中fig为图形句柄,filname为文件名.

saveas(gcf, 'myfigure.png')

使用saveas()函数将图像保存成位图时,会发生失真.要精确控制生成图片的质量,可以使用print()函数,见官方文档

相关标签: MATLAB绘图