第三章 基础绘图

第三章 基础绘图

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π)\)内余弦函数的图像:

    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');	% 添加图例
    
    3.2
  • 使用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}');
    
    3.3
  • 使用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 $$'; %使用LaTex代码表示
    text(0.25,2.5,str,'Interpreter','latex');
    annotation('arrow','X',[0.32,0.5],'Y',[0.6,0.4]); 
    
    3.4

控制坐标轴,边框与网格

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

命令 作用
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;title('axis normal')
subplot(2, 2, 2); plot(x, y); axis square;title('axis square')
subplot(2, 2, 3); plot(x, y); axis equal;title('axis equal')
subplot(2, 2, 4); plot(x, y); axis equal tight;title('axis equal tight')
3.5

绘制多条图线

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

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

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

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

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

图形对象的操作

图形句柄

句柄

在Matlab中,每一个对象都有一个数字来标识,此标识成为句柄(handle),当每次创建一个对象时,matlab就为他创建一个唯一的句柄

从数据类型上来看它只是一个16位的无符号整数

句柄实际上是一种指向某种资源的指针,但与指针又有所不同

句柄与指针的区别在于:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。而句柄不行,它是对象生成时系统指定的,是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的

获取图形对象的句柄

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

可以到官方文档查看更多

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

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

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

属性检查器允许您以交互方式修改对象,如图形对象。打开方式:

  • 图窗工具栏:点击属性检查器图标 3.8
  • MATLAB命令提示符:输入 inspect,为当前图形(如果存在)打开属性检查器。要查看特定对象的属性,请选择该对象。如果不存在图形,此命令将打开一个空的属性检查器

例子:

  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()函数,见官方文档

posted @ 2020-09-21 11:11  打不死の小强丶  阅读(142)  评论(0编辑  收藏  举报