Matlab初阶绘图总结

        前言:初学者一只,内容仅为学习的总结,可能存在不全面、有错误等情况,望海涵并加以斧正。对于笔记中的一些内容,作者也是不知所以然,也望各路大佬解惑。

目录

一、绘图指令:

二、同时绘制多条曲线:

        方法一(plot):

        方法二(hold on/off):

三、图像信息显示:

        1、曲线说明(lengend):

        2、标题和轴标签:

        3、注释:

四、图像调整:

        方法一(临时调整):

        方法二(永久调整):

        常用修改(选读):

五、图像展示:

        多图框展示:

        同框多图展示(subplot):

        轴展示:

六、将图像另存为文件(saveas):


一、绘图指令:

plot(x=[1:length(y)], y, 'type')

通过连接给定坐标的点绘图,x 值默认为 [1:length(y)]

线的类型可以通过 ’type' 改变(大小写不敏感):

标记 线型 颜色
. 圆点 - 直线(默认) b 蓝(默认)
* 星号 -- 线虚线 r
x 点虚线 g 绿
o -. 点划线 y
p 星形 k
s 方形 w
d 菱形 m 洋红
+ 加号 c
v 向下三角
^ 向上三角
< 向左三角
> 向右三角
h 六芒星

二、同时绘制多条曲线

        一般情况下,若是命令行窗口中同时存在多个绘制指令,将会逐个运行而后删除,最终展示最后一条指令的绘制结果。

        若是想同时展现多个绘制结果:

        方法一(plot):

plot(x_1, y_1, 'str1', x_2, y_2, 'str2', ...)

注意:1、两条线之间用 , 隔开

           2、同时绘制多条曲线时,x不可省略

        方法二(hold on/off):

        在绘制曲线较多时,使用 plot  指令可能会导致混乱,此时我们考虑 hold on/off 指令。

hold on

plot(y_1)

plot(y_2)

...

hold off

三、图像信息显示:

        1、曲线说明(lengend):

        当曲线较多时,我们可能无法轻易地知道每条分别是什么曲线,这时我们考虑使用 legend 指令,它将让我们轻易地得知每条线分别是什么。

legend('L1', 'L2', ...)        % 按绘制顺序一次展示各条曲线

        注:图像中的所有文字内容都适用 LaTex 公式

        2、标题和轴标签:

        一副清晰的图像,光有数据是远远不够的,所以我们考虑为图像添加标题x轴标签y轴标签(有时也可能需要添加z轴标签)。

title('str')            % 标题

xlable('str')        % x轴标签

ylable('str')        % y轴标签

zlable('str')        % z轴标签

        3、注释:

        当然,有时我们需要在图像中增加更多元素来使其变得更加清晰完整。

展示文本:

text(x, y, str, 'Interpreter', 'latex')

注释:

annotation('annotation', 'X' , [x_1, x_2], 'Y', [y_1, y_2])

注释 描述
line 直线
arrow 箭头
doublearrow 双向箭头

四、图像调整:

        在图像绘制完成后,往往可能有些不尽如人意,这时我们希望去调整它,那么我们该怎么做呢?

        调整图像之前,我们应该先知道图像的构成:图框(figure)、(axes)和线(line)。

        方法一(临时调整):

        我们可以在图窗界面,选中 查看—属性编辑器 进入属性编辑模式。通过 更多属性 对图像的各种属性进行调整。

        这样做固然清晰且便捷,但它有一个缺点:修改完后不会保存。也就是说,当你下一次运行代码时,图窗界面仍是修改前的模样。如果你只需要它一次(例如保存图片),那么这也不失为一种好方法。

        方法二(永久调整):

        当你需要展示代码时,为了让图像一直保持修改后的样子,我们得通过代码来改变它。前文提到,一个图像由图形、轴和线组成,为了让计算机知道我们要修改的对象是哪个,我们需要获得它们的句柄(handle)。

        众所周知,在一副图像中,它的图形和轴始终都是唯一的,所以 matlab 为我们提供它们的句柄:

对象 句柄
图形 gcf

gca

        而图像中的图线都是人为定义的,计算机并不知道它们有多少个,甚至是否存在,所以它们的句柄,也需要我们自己去定义。

plot(x, y)

handle = plot(x, y)

        得到句柄后,我们就可以使用它来获取相应对象的属性了。(不必要的步骤)

get(handle)        % 在命令行展示对象的所有属性

        知道了对象的属性,我们就可以对它进行修改了。

set(handle, 'property', setting)        % 对某对象的某属性进行某种修改

        常用修改(选读):

set(gca, 'XLim', [m, n])        % 将 x 轴范围设置为 [m, n]

set(gca, 'YLim', [m, n])        % 将 y 轴范围设置为 [m, n]

注:指令 xlim([m, n]) 和 ylim([m, n]) 可以达到同样效果。

set(gca, 'FontSize', num)        % 修改轴字号大小为 num

set(gca, 'XTick', m:t:n)

% 通过修改 t 的值来修改显示的刻度,一般 m 和 n 为函数定义域的下限和上限(若 m 与 n 不是,则图像刻度会出现空白)

set(gca, 'XTickLabel', m:t:n)

% 改变显示刻度的值,一般 m:t:n 的元素数量与显示刻度的数量相等,按顺序显示。若比显示刻度多则无碍;若少则在一轮排完后重新开始。

set(gca, 'XTickLabel', {'str1', 'str2', ...})

set(gca, 'YTickLabel', {'str1', 'str2', ...})

% 将刻度改为文本格式

set(handle_of_line, 'LineStyle', 'style', 'LineWidth', num, 'Color', 'color')

% 修改线型、线宽以及线的颜色

set(handle_of_line, "Marker",'marker', 'MarkerEdgeColor', 'color', 'MarkerFaceColor', 'color', 'MarkerIndices', num)

% 修改标记的各项参数

delet(handle_of_line)        % 删除线

delet(gca)        % 删除轴

delet(gcf)        % 删除图框

注:图形是轴的父类,轴是线的父类,删除父类子类也会一并被删除。

五、图像展示:

        多图框展示:

        有时,为了将多幅图像分别展示,我们需要宣告 figure。

figure, plot(x_1, y_1)

figure, plot(x_2, y_2)

        我们可以自定义图框的一些属性:

figure('Position', ['left', 'bottom', 'width', 'height'])

% 分别为:距离屏幕左边缘和下边缘距离,图形的宽度和高度

figure('Name', 'str')        % 图框名字

figure('Color', 'color')        % 图框颜色

        需要注意的是:此时,图框和轴的句柄 gca 与 gcf 指向的都是最近一副图的对象。

        同框多图展示(subplot):

        如果我们想将几幅图展现在一个图框上,我们需要用到 subplot 指令:

subplot(row, col, num); plot(x,y)

% 建立一个 row * col  的图框,将图像展示到 num 位置上

        轴展示:

        有时我们需要将图像的轴以不寻常的比例展示,此时我们需要用到 axis 指令:

axis equal        % 使轴按原比例展示(默认)

axis square        % 使 x 轴与 y 轴的总长相等来展示

axis on/off        % 打开/关闭轴显示

box on/off        % 打开/关闭边框显示

grid on/off        % 打开/关闭网格显示

六、将图像另存为文件(saveas):

        我们往往需要将 matlab 绘制出的图像另存为一份文件以便日后查看或使用,matlab 为我们提供了 saveas 指令:

saveas(gcf, '', '')

以下给出常用的数据格式:

位图 矢量图
jpeg pdf
png eps
tiff epsc
bmp meta
bmpmono svg
bmp256 ps
psc
        简单介绍一下位图和矢量图的区别:矢量图不会因为放大而模糊,但当绘制图像中含有图片时应该选择位图保存。

        欢迎大家 参考、补充、答疑、斧正。

        六月渔烬 文

你可能感兴趣的:(Matlab学习笔记,matlab)