B站_台大郭老师视频笔记(也参考了其它同学笔记和官方文档,在此感谢!)
一、线的绘制
1.plot() 函数图线绘制
格式:
(1)plot(x,y,'LineSpec')
其中:
x : 图线上点的x坐标;
y : 图线上点的y坐标;
LineSpec : 图线的线条设定,三个指定线型,标记符号和颜色的设定符组成一个字符串,设定符不区分先后。
官方文档链接:二维线图 - MATLAB plot - MathWorks 中国
线型符号 | 标记 | 颜色 | |||
---|---|---|---|---|---|
- | 实线(默认) | o | 圆圈 | y | 黄色 |
-- | 虚线 | + | 加号 | m | 品红色 |
: | 点线 | * | 星号 | c | 青蓝色 |
-. | 点划线 | . | 点 | r | 红色 |
x | 叉号 | g | 绿色 | ||
s | 方形 | b | 蓝色 | ||
d | 菱形 | w | 白色 | ||
^ | 上三角 | k | 黑色 | ||
v | 下三角 | ||||
> | 右三角 | ||||
< | 左三角 | ||||
p | 五角星 | ||||
h | 六角形 |
x = 0:pi/10:2*pi;
y = sin(x);
plot(x,y,'or--')
-
(2)plot(x,y)
- 默认线型为蓝色实线
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
(3)plot(y)
默认x=1,2,3,……n
x和'LineSpec'可省略
plot(cos(0:pi/20:2*pi));
(4)plot(X1,Y1,LineSpec1,...,Xn,Yn,Ln)
实现画多条图线
(5)hold on/off 绘制一组图形
%MATLAB默认会把旧的图形清掉,再画新的图。
plot(cos(0:pi/20:2*pi))
plot(sin(0:pi/20:2*pi))
% hold on/off
hold on %保持绘制多张图像
plot(cos(0:pi/20:2*pi),'or--');
plot(sin(0:pi/20:2*pi),'xg:');
hold off %结束保持
二、增加图表元素
1.legend() 函数增加图例
格式:legend('str1','str2',……)
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'); %增加图例
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'); % x轴标签
ylabel('values of sin(t) and e^{-x}'); %y轴标签
title('Function Plots of sin(t) and e^{-x}'); %标题
legend('sin(t)','e^{-x}'); %图例
3.text()和annotation()
文本与数学表达式使用[LaTex]
点击了解👉text 向数据点添加文本说明 点击了解👉Text属性 坐标区文本的外观和行为
\int=∫ str是积分式子,text中的0.25,2.5是这个积分在坐标中的位置 点击了解👉annotation()创建注释:用于画箭头 X、Y是箭头的位置相对于整个方框的比例, [0.32,0.5]是指:x坐标从整个图形32%的地方到50%的地方(从左到右) [0.6,0.4]是指:y坐标从60%的地方到40%的地方(从上到下)
点击了解👉line()创建基本线条
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]); %画箭头
Exercise练习
将f画成一条黑线,将g画成一系列红色圆圈,在一个图中表示范围t = 1到2,给每个轴标上标签,并添加标题和图例。
t=linspace(1,2);
f=t.^2;
g=sin(2*pi*t);
plot(t,f,'k',t,g,'or');
title('Mini Assignment #1');
xlabel('Time (ms)');
ylabel('f(t)');
legend('t^2','sin(2\pit)','location','northwest');
% location指将图例放置在什么地方,后接英文的东南西北。
linspace
生成线性间距向量 - MATLAB linspace - MathWorks 中国
y = linspace(x1,x2)
返回包含 x1
和 x2
之间的 100 个等间距点的行向量。
y = linspace(x1,x2,n)
生成 n
个点。这些点的间距为 (x2-x1)/(n-1)
。
linspace
类似于冒号运算符“:
”,但可以直接控制点数并始终包括端点。“linspace
”名称中的“lin
”指示生成线性间距值而不是同级函数 logspace
,后者会生成对数间距值。 返回包含 x1
和 x2
之间的 100 个等间距点的行向量。
y = linspace(-5,5) %创建一个由区间 [-5,5] 中的 100 个等间距点组成的向量。
y1 = linspace(-5,5,7) %创建一个由区间 [-5,5] 中的 7 个等间距点组成的向量。
y = linspace(1+2i,10+10i,8) %创建一个复数向量,包含介于 1+2i 和 10+10i 之间的 8 个等间距点。
三、图表元素调整
1.基本概念
(1)常用属性
-
Font 字体
-
Font size 字体大小
-
Line width 线宽
-
Axis limit 轴的限制
-
Tick position 标记的位置
-
Tick label 标记的标签
(2)图形对象
图形是由许多物体组成的
(3)图像的属性
2.修改对象属性
两步:
1.识别一个对象的handle (句柄)
2.获取或者修改对象元素的属性
(1)识别一个对象的handle (句柄)
方式一:h=plot(x,y) 获得所画图线line的handle(缺点:无法获得图表figure和坐标axes的handle)
方式二:利用Utility functions
Utility Function | 作用 |
---|---|
gca | 返回当前坐标轴axes的句柄handle |
gcf | 返回当前图表figure的句柄handle |
allchild | 找到特定元素的子属性 |
ancestor | 找到图象元素的父属性 |
delete | 删除某元素 |
findall | 找到所有图象元素 |
(2)获取或修改对象元素的属性(property)
获取属性,使用get() 修改属性,使用set()
-
获取图形对象的属性:get ()
x = linspace(0, 2*pi, 1000); y = sin(x); h = plot(x,y);
axes:坐标轴 获取h函数的属性
get(h)
获取坐标轴axes属性
get(gca)
获取图像figure属性
get(gcf)
(3)设置坐标轴的范围
x = linspace(0, 2*pi, 1000);
y = sin(x); h = plot(x,y);
生成图像后,不要关闭窗口,下面才能设置属性
接着上面的代码设置轴的限制
set(gca, 'XLim', [0, 2*pi]);
set(gca, 'YLim', [-1.2, 1.2]);
可以看到坐标轴的刻度已经发生变化
方法二:快捷设置
xlim([0,2*pi]); %修改x轴范围
ylim([-1.2, 1.2]); %修改y轴范围
(4)设置轴的字体和刻度
设置坐标轴的字体大小
FontSize:字号大小
set(gca,'FontSize',25); %坐标轴字号大小
XTick:x轴刻度
XTickLabel:x轴刻度处标签
set(gca,'XTick',0:pi/2:2*pi); %XTick x轴刻度
set(gca,'XTickLabel',0:90:360); %XTickLabel x轴刻度处标签
FontName:字体类型
%set(gca,'FontName','Symbol')不再支持Symbol 字体
set(gca,'XTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'}) %x轴刻度处标签
(5)设置图线line
点击了解👉text 向数据点添加文本说明
点击了解👉Text属性 坐标区文本的外观和行为
点击了解👉Line 图形线条的外观和行为
LineStyle:线型
LineWidth:线宽
转载于漓艾初 matlab 关于interpreter的使用 matlab 关于interpreter的使用_matlab interpreter_漓艾初的博客-CSDN博客
% 设置线型
set(h,'LineStyle','-.',...
'LineWidth',7.0,'Color','g');
其它:
plot(x,y,'-.g','Linewidth',7.0);
delete(h); %删除所画图线line
(6)设置标记
设置标记的填充颜色和轮廓颜色
MarkerFaceColor:标记填充颜色
MarkerEdgeColor:标记轮廓颜色
MarkerSize:标记大小
x=rand(20,1);
set(gca,'FontSize',18);
plot(x,'-md','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g','MarkerSize',10);
xlim([1,20]);
Exercise 练习
%原始图像
t=linspace(1,2);
f=t.^2;
g=sin(2*pi*t);
hold on;
h1=plot(t,f,'k-');
h2=plot(t,g,'og');
legend('t^2','sin(2\pit)','location','northwest')
title('Mini Assignment#1')
xlabel('Time(ms)')
ylabel('f(t)')
xticks(1:0.2:2)
%修改后图像
title('Mini Assignment#1','FontSize',25) %修改标题title大小
set(gca,'FontSize',15) %设置坐标轴字体大小
set(h1,'LineWidth',4) %设置h1线宽
set(h2,'MarkerFaceColor','#0000ff') %设置标记填充颜色
set(h2,'MarkerEdgeColor','r') %设置标记轮廓颜色
set(h2,'MarkerSize',10) %设置标记大小
其它:
t=linspace(1,2); f=t.^2; g=sin(2*pi*t); plot(t,f,'k-',t,g,'or'); h=plot(t,f,'k-',t,g,'or') legend('t^2','sin(2\pit)','location','northwest','FontSize',25); title('Mini Assignment#1') xlabel('Time(ms)') ylabel('f(t)') xticks(1:0.2:2) set(h,'LineWidth',2); set(gca,'FontSize',15); set(h,'MarkerFaceColor','g');
t=linspace(1,2); f=t.^2; g=sin(2*pi*t); hold on a=plot(t,f,'k-','LineWidth',3); h=plot(t,g,'or'); hold off legend('t^2','sin(2\pit)','location','northwest','FontSize',25); title('Mini Assignment#1') xlabel('Time(ms)') ylabel('f(t)') xticks(1:0.2:2) set(h,'LineWidth',2); set(gca,'FontSize',15); set(gca,'LineWidth',2); set(h,'MarkerFaceColor','#0000ff');
3.总结
Utility Function | 作用 |
---|---|
gca | 返回当前坐标轴axes的句柄handle |
gcf | 返回当前图表figure的句柄handle |
allchild | 找到特定元素的子属性 |
ancestor | 找到图象元素的父属性 |
delete | 删除某元素 |
findall | 找到所有图象元素 |
FontSize:字号大小
set(gca,'FontSize',25); %坐标轴字号大小
FontName:字体类型
%set(gca,'FontName','Symbol')不再支持Symbol 字体
set(gca,'XTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'}) %x轴刻度处标签
XTick:x轴刻度
XTickLabel:x轴刻度处标签
set(gca,'XTick',0:pi/2:2*pi); %XTick x轴刻度
set(gca,'XTickLabel',0:90:360); %XTickLabel x轴刻度处标签
LineStyle:线型
LineWidth: 线宽
% 设置线型
set(h,'LineStyle','-.',...
'LineWidth',7.0,'Color','g');
MarkerFaceColor:标记填充颜色
MarkerEdgeColor:标记轮廓颜色
MarkerSize:标记大小
x=rand(20,1);
set(gca,'FontSize',18);
plot(x,'-md','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g','MarkerSize',10);
xlim([1,20]);
四、生成多个图像
1.生成
格式:figure,plot(x,y1)
x=-10:0.1:10;
y1=x.^2-8;
y2=exp(x);
figure,plot(x,y1);
figure,plot(x,y2);
注意点:
gca指的是当前(current)图像的坐标轴axes:当两张图像都生成时,指的是figure2。
gcf指的是当前(current)图像的figure:当两张图像都生成时,指的是figure2。
2.图像的位置和尺寸
例如:
figure('Position', [200, 200, 500,500]);
3.一个大图像里生成多个小图
“一个图像”中的几个小图表
例如:subplot()
%一个大图像里生成多个小图
t=0:0.1:2*pi; x=3*cos(t); y=sin(t); %椭圆 (1/3*x)^2+y^2=1
%不同坐标轴设定
subplot(2,2,1); plot(x,y); axis normal; %
subplot(2,2,2); plot(x,y); axis square; % x total=y total 坐标轴总体长宽相等
subplot(2,2,3); plot(x,y); axis equal; % x轴和y轴刻度值相等 正确画法
subplot(2,2,4); plot(x,y); axis equal tight; %所画的line和坐标轴 相切
4.网格、框和坐标轴设置
grid on/off | 使网格可见或不可见 |
---|---|
box on/off | 使边框可见或不可见 |
axis on/off | 使坐标轴可见或不可见 |
axis normal | 自动调整轴的长宽比和数据单位的相对缩放 |
axis square | 使当前坐标轴区域为正方形 |
axis equal | 设置高宽比,使数据单元在每个方向上都是相同的 |
axis equal tight | 将轴限制设置为数据的范围 |
axis image | 图框紧紧地围绕着数据 |
axis ij | 将坐标系统的原点放在左上角 |
axis xy | 把原点放在左下角 |
%接着上面程序
axis off; %关闭当前figure的坐标轴
axis on;
box off; %关闭边框
grid on; %打开网格线
五、将数据保存到文件中
1.saveas()
将图窗保存为特定文件格式
语法:
saveas(fig,filename,formattype)
详细点击链接进入官方文档
saveas(fig,filename)
将 fig
指定的图窗或 Simulink® 模块图保存到 filename
文件中。将文件名指定为字符向量或字符串,包括文件扩展名,例如 'myplot.jpg'
。文件扩展名用于定义文件格式。如果不指定扩展名,则 saveas
会将图窗保存为 FIG 文件。要保存当前图窗,请将 fig
指定为 gcf
。
saveas(fig,filename,formattype)
使用指定的文件格式 formattype
创建文件。如果不在文件名中指定文件扩展名(例如 'myplot'
),则与指定的格式对应的标准扩展名会自动附加到文件名后面。如果指定了文件扩展名,该扩展名不必与文件格式相匹配。saveas
为该格式使用 formattype
,但会将文件保存为指定的扩展名。因此,文件扩展名可能与使用的实际格式不匹配。
示例:
将图窗保存为 PNG 文件
x = [2 4 7 2 4 5 2 5 1 4];
bar(x);
saveas(gcf,'Barchart.png')
formattype
- 文件格式 'fig'
| 'm'
| 'mfig'
| 位图文件格式 | 向量图形文件格式
文件格式,指定为以下其中一个选项:
-
'fig'
- 将图窗保存为具有.fig
扩展名的 MATLAB 图窗文件。要打开以.fig
扩展名保存的图窗,请使用openfig
函数。此格式对于 Simulink 模块图无效。 -
'm'
或'mfig'
- 将图窗保存为一个 MATLAB 图窗文件,并额外创建一个可以打开图窗的 MATLAB 文件。要打开图窗,需运行 MATLAB 文件。此选项对于 Simulink 模块图无效。 -
位图文件格式 - 将格式指定为表 位图格式 中的其中一种位图选项。
-
向量图形文件格式 - 将格式指定为 向量图形格式 表中的其中一种向量图形选项。
位图文件
位图图像是以像素表示的图窗。生成的文件的大小取决于图窗、格式和系统分辨率。Web 浏览器和其他显示图形的应用程序广泛使用位图。但是,它们无法很好地支持透明度或缩放,而且您也无法在其他图形应用程序中修改其中的图形对象,例如线条和文本。
位图格式
选项 | 格式 | 默认文件扩展名 |
---|---|---|
'jpeg' | JPEG 24 位 | .jpg |
'png' | PNG 24 位 | .png |
'tiff' | TIFF 24 位(压缩) | .tif |
'tiffn' | TIFF 24 位(未压缩) | .tif |
'meta' | 增强型图元文件(仅限 Windows) | .emf |
'bmpmono' | BMP 单色 | .bmp |
'bmp' | BMP 24 位 | .bmp |
'bmp16m' | BMP 24 位 | .bmp |
'bmp256' | BMP 8 位(256 色,使用固定颜色图) | .bmp |
'hdf' | HDF 24 位 | .hdf |
'pbm' | PBM(普通格式)1 位 | .pbm |
'pbmraw' | PBM(原始格式)1 位 | .pbm |
'pcxmono' | PCX 1 位 | .pcx |
'pcx24b' | PCX 24 位彩色(三个 8 位平面) | .pcx |
'pcx256' | PCX 8 位新彩色(256 色) | .pcx |
'pcx16' | PCX 旧彩色(EGA/VGA 16 色) | .pcx |
'pgm' | PGM(普通格式) | .pgm |
'pgmraw' | PGM(原始格式) | .pgm |
'ppm' | PPM(普通格式) | .ppm |
'ppmraw' | PPM(原始格式) | .ppm |
向量图形文件
向量图形文件存储用于重新绘制图窗的命令。这种格式类型适合缩放,但可能导致文件较大。在某些情况下,向量图形格式可能产生三维排列有误的对象。某些应用程序支持对向量图形格式进行大量编辑,但是某些应用程序不支持调整图形大小以外的编辑。最佳做法是在图窗仍处于 MATLAB 中时进行所有必要的更改。
通常,生成向量图形文件时,saveas
会使用 Painters 渲染器。对于一些复杂图窗,saveas
会改用 OpenGL® 渲染器。如果它使用 OpenGL 渲染器,则向量图形文件会包含嵌入式图像,这可能会限制您可在其他应用程序中编辑该图像的程度。此外,如果 saveas
使用 OpenGL 渲染器生成文件,则不支持透明度。要确保 saveas
使用 Painters 渲染器,请将图窗的 Renderer 属性设置为 'painters'
。
如果设置了图窗的 Renderer 属性,则 saveas
将会使用该渲染器。否则,它会选择合适的渲染器。但是,如果 saveas
选择的渲染器与显示的图窗所用的渲染器不同,则所保存图窗的一些细节与显示的图窗可能有所不同。如果需要,您可以通过设置图窗的 Renderer 属性使显示的图窗和保存的图窗使用同一渲染器。
向量图形格式
选项 | 格式 | 默认文件扩展名 |
---|---|---|
'pdf' | 整页可移植文档格式 (PDF) 颜色 | .pdf |
'eps' | PostScript® (EPS) 3 级黑白 | .eps |
'epsc' | 封装的 PostScript (EPS) 3 级彩色 | .eps |
'eps2' | 封装的 PostScript (EPS) 2 级黑白 | .eps |
'epsc2' | 封装的 PostScript (EPS) 2 级彩色 | .eps |
'meta' | 增强型图元文件(仅限 Windows) | .emf |
'svg' | SVG(可伸缩向量图) | .svg |
'ps' | 全页 PostScript (PS) 3 级黑白 | .ps |
'psc' | 全页 PostScript (PS) 3 级彩色 | .ps |
'ps2' | 全页 PostScript (PS) 2 级黑白 | .ps |
'psc2' | 全页 PostScript (PS) 2 级彩色 | .ps |
注意
仅 PDF 和 PS 格式使用图窗的 PaperOrientation
属性以及 PaperPosition
属性的 left
和 bottom
元素。其他格式会忽略这些值。
提示
print
() 高解析度
-
要在保存图窗时控制尺寸或分辨率,请改用
print
函数。 -
saveas
函数和从文件菜单访问的另存为对话框生成的结果不相同。另存为对话框按屏幕分辨率和屏幕大小生成图像。saveas
函数使用 150 DPI 的分辨率,并使用图窗的 PaperPosition 和 PaperPositionMode 属性确定图像的大小。 -
已保存和打印的图窗的详细信息可能不同于图窗在屏幕上的显示。要获取与屏幕显示更一致的输出,请参阅使用特定大小、分辨率或背景色保存图窗。
替代功能
从 R2020a 开始,您可以使用 exportgraphics 函数保存下列任一项的内容:坐标区、图窗、可作为图窗子级的图、分块图布局或容器(如面板)。当您需要执行以下操作时,此函数比 saveas
函数更合适:
-
保存在 App 或 MATLAB Online™ 中显示的图形
-
最小化内容周围的空白
-
用可嵌入的字体保存 PDF 片段
-
保存图窗中内容的一部分
-
控制背景颜色,而不必修改图窗的属性