MATLAB(四)初阶绘图

 B站_台大郭老师视频笔记(也参考了其它同学笔记和官方文档,在此感谢!)

MATLAB教學 - 05初阶绘图_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1GJ41137UH?p=5&vd_source=676bbdd1e4104050904112dc86dc452c

一、线的绘制

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)

返回包含 x1x2 之间的 100 个等间距点的行向量。

  • y = linspace(x1,x2,n)

生成 n 个点。这些点的间距为 (x2-x1)/(n-1)

linspace 类似于冒号运算符“:”,但可以直接控制点数并始终包括端点。“linspace”名称中的“lin”指示生成线性间距值而不是同级函数 logspace,后者会生成对数间距值。 返回包含 x1x2 之间的 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)

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 属性的 leftbottom 元素。其他格式会忽略这些值。

提示

print() 高解析度

  • 要在保存图窗时控制尺寸或分辨率,请改用 print 函数。

  • saveas 函数和从文件菜单访问的另存为对话框生成的结果不相同。另存为对话框按屏幕分辨率和屏幕大小生成图像。saveas 函数使用 150 DPI 的分辨率,并使用图窗的 PaperPositionPaperPositionMode 属性确定图像的大小。

  • 已保存和打印的图窗的详细信息可能不同于图窗在屏幕上的显示。要获取与屏幕显示更一致的输出,请参阅使用特定大小、分辨率或背景色保存图窗

替代功能

从 R2020a 开始,您可以使用 exportgraphics 函数保存下列任一项的内容:坐标区、图窗、可作为图窗子级的图、分块图布局或容器(如面板)。当您需要执行以下操作时,此函数比 saveas 函数更合适:

  • 保存在 App 或 MATLAB Online™ 中显示的图形

  • 最小化内容周围的空白

  • 用可嵌入的字体保存 PDF 片段

  • 保存图窗中内容的一部分

  • 控制背景颜色,而不必修改图窗的属性

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值