MATLAB04:基础绘图

pdf版本笔记的下载地址: MATLAB04:基础绘图(访问密码:3834)

学习一门技术最好的方式就是阅读官方文档,可以查看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) (0,2π)内余弦函数的图像:

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

plot的基本使用

装饰图线

  • 使用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');	% 添加图例
    

    使用legend增加图例

  • 使用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}');
    

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

  • 使用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]); 
    

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

控制坐标轴,边框与网格

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

命令作用
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

axis命令的效果

绘制多条图线

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

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

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

多次执行plot只会保留最后一次绘制的图形

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

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

使用hold命令控制绘图区域的刷新

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

使用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')

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

图形对象的操作

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

在MATLAB中图形都是以对象的形式储存的

获取图形句柄

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

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

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

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

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

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

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

图形对象的属性

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

  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'});
    

    句柄操作实例1

  2. 改变线型

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

    句柄操作实例2

将图形保存到文件

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

saveas(gcf, 'myfigure.png')

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

pdf版本笔记的下载地址: MATLAB04:基础绘图(访问密码:3834)

  • 426
    点赞
  • 1603
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值