前言:初学者一只,内容仅为学习的总结,可能存在不全面、有错误等情况,望海涵并加以斧正。对于笔记中的一些内容,作者也是不知所以然,也望各路大佬解惑。
目录
一、绘图指令:
二、同时绘制多条曲线:
方法一(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(x_1, y_1, 'str1', x_2, y_2, 'str2', ...)
注意:1、两条线之间用 , 隔开
2、同时绘制多条曲线时,x不可省略
在绘制曲线较多时,使用 plot 指令可能会导致混乱,此时我们考虑 hold on/off 指令。
hold on
plot(y_1)
plot(y_2)
...
hold off
当曲线较多时,我们可能无法轻易地知道每条分别是什么曲线,这时我们考虑使用 legend 指令,它将让我们轻易地得知每条线分别是什么。
legend('L1', 'L2', ...) % 按绘制顺序一次展示各条曲线
注:图像中的所有文字内容都适用 LaTex 公式
一副清晰的图像,光有数据是远远不够的,所以我们考虑为图像添加标题、x轴标签与y轴标签(有时也可能需要添加z轴标签)。
title('str') % 标题
xlable('str') % x轴标签
ylable('str') % y轴标签
zlable('str') % z轴标签
当然,有时我们需要在图像中增加更多元素来使其变得更加清晰完整。
展示文本:
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(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 % 打开/关闭网格显示
我们往往需要将 matlab 绘制出的图像另存为一份文件以便日后查看或使用,matlab 为我们提供了 saveas 指令:
saveas(gcf, '
', ' ') 以下给出常用的数据格式:
位图 矢量图 jpeg png eps tiff epsc bmp meta bmpmono svg bmp256 ps psc
简单介绍一下位图和矢量图的区别:矢量图不会因为放大而模糊,但当绘制图像中含有图片时应该选择位图保存。
欢迎大家 参考、补充、答疑、斧正。
六月渔烬 文