周一到!从本周开始,我们一起来学习关于绘图的操作吧!之前学过了如何从文件中读取数据,有的小伙伴可能着急了,怎么学了这么久,还是不会画图呀?!今天我们从MATLAB基本图形的绘制开始学习,增强信心,之后再去学烧脑的数据处理内容~
1.图窗认识
先从认识MATLAB基本的画图GUI界面开始吧!
输入
figure;
就会生成一个最基本的图窗:
![52ac0a72f653f98785551efc8b82da49.png](https://i-blog.csdnimg.cn/blog_migrate/946700250e944856a6013dc6f1a59c9b.png)
MATLAB里,图窗的含义类似于画布,在一个图窗里绘制图形,即在同一张画布上绘图,保存结果后,将出现一张图。而如果想分别绘制多张图,则需要生成多个图窗分别绘制。
那么图中每个按钮又分别是什么意思呢?这里给出一个简单的sin函数绘制的折线图例子进行说明:
点击“查看”,可以选择六个选项框,其全部选项内容包括图形工具栏、照相机工具栏、绘图编辑工具栏。在平时使用时,则最常应用到图形选项板、绘图浏览器及属性编辑器。
菜单栏全部打开时,如下所示:
![2d570413fc4eac7b2d2f0ae0032d8b4f.png](https://i-blog.csdnimg.cn/blog_migrate/282627deae22beeae60183fac258c0e6.png)
那么各个图标又有哪些功能呢?
图形工具栏的功能从左到右分别为:打开新图窗、打开新文件、保存、打印、选择、放大、缩小、平移(手形工具)、旋转、数据游标、刷亮、链接、插入颜色栏、插入图例等。
![1dae22725c20a18770eb0db7c19aa7c2.png](https://i-blog.csdnimg.cn/blog_migrate/5e0f22a02651637d5699deafe00c4d50.png)
绘图工具栏的功能从左到右分别为:填充(背景色)、颜色选择(包括边框和数据线)、文本颜色、字体、加粗、倾斜、对齐方式(左中右对齐)、插入(直线、单向箭头、双向箭头、文本指向性箭头、文本框、矩形、椭圆等)、固定到坐标轴、对齐分布工具(可针对图中的对象设置位置排版)。
![bdf91225434a3550308336512d1123c4.png](https://i-blog.csdnimg.cn/blog_migrate/d3c238e19ba41668fa11de1ec421f791.png)
图形选项板:包括添加子图、选择变量、插入注释(与上面绘图工具栏的插入相同)。
![2c1a82bc275637c13e5b6b363040c1c3.png](https://i-blog.csdnimg.cn/blog_migrate/8da8b0e7ccdc6dd6f85ae3354bf68e87.png)
属性编辑器的功能为对图形的各项属性进行操作。
当选择整个Figure的属性时:
![6bc7d3111acbbe1137b5eb3b7f3c4bd2.png](https://i-blog.csdnimg.cn/blog_migrate/23cdc29da8fcafdecec99c96de17ffb8.png)
点击“更多属性”即可对如下性质进行设置:
![a60ee76240b65278927dfcf615b33856.png](https://i-blog.csdnimg.cn/blog_migrate/a81b2f928399e163e4f714e435b043d7.png)
此外,在实际应用中,属性编辑器中的“导出设置”也十分常用,在这里,小编建议大家在保存前选择“放大坐标轴至充满图形”,这样就可以避免以后出现“所见不是所得”的问题,即在MATLAB里调好的图形,保存之后其大小或相对位置却发生了改变。也可以在选项里根据要求调整渲染效果,得到不同分辨率的图形。
![4913e6adbda525ce281cf8e9d0324704.png](https://i-blog.csdnimg.cn/blog_migrate/3e3b1e8b181192feaa618a2065a08f09.png)
当选择坐标轴时,属性编辑器将显示:
因此可直接对坐标轴的各项属性进行设置。
![14d45962df6a7f6ac41d5edb8d68a4c8.png](https://i-blog.csdnimg.cn/blog_migrate/feb41ea8104dc2e9f3499d063b42f870.png)
当选择图中的数据时,其属性编辑器显示为:
![f090383ec8c2446cbdcd0835ff5396fc.png](https://i-blog.csdnimg.cn/blog_migrate/d48b89c0864d0b0ee4adaf495c489896.png)
并且在进行过一系列的上述操作后,可以点击“文件”——“生成代码”,将之前的一系列设置生成代码保存起来,下次使用的时候,只需要重新调用代码就可以完成使用啦!
是不是听起来就很方便,基本的注释和修改都可以在MATLAB图窗里完成,以后再也不需要用ppt大法来折腾了。
2.Figure的基本组成
在认识了MATLAB的图窗后,再来理一下MATLAB画图时候的基本逻辑吧!
新手可能会对figure和axes的概念有混淆。在实际绘图中,一张图可能会有好几个子图,这时axes表示生成的各个小图,而figure则是绘制各图的大画布。也就是说:
![8aa051891d316bc4cd7bfcf920318035.png](https://i-blog.csdnimg.cn/blog_migrate/55f85ef65f6e7972dcca7c073fb8f9d8.png)
所以,在之后设置图形属性时,有时用到gca,有时用到gcf,可不要混淆咯~
3.绘图语句
关于绘图的语句具体语句又有哪些呢?下面这张表已经为你总结好,需要的时候查一查官方文档就可以知道其具体用法啦!
函数名称 | 功能 |
plot | 绘制线状图 |
scatter | 绘制散点图 |
bar | 绘制二维条状图 |
barh | 绘制二维水平条状图 |
bar3 | 绘制三维条状图 |
barh3 | 绘制三维水平条状图 |
area | 绘制面积图 |
pie | 绘制饼图 |
pie3 | 绘制三维饼图 |
stem3 | 绘制三维离散图 |
compass | 绘制放射线图 |
feather | 绘制线性放射线图 |
quiver | 绘制场图(如风场等) |
quiver3 | 绘制三维场图 |
contour | 绘制等高线轮廓图 |
contour3 | 绘制三维等高线轮廓图 |
contourf | 绘制填充的等高线图 |
clabel | 标识等高线标签 meshc:绘制三维mesh曲线和等高线 |
surfc | 绘制三维surf曲线和等高线 |
semilogx | 绘制以X轴为对数坐标轴的对数坐标图 |
semilogy | 绘制以Y轴为对数坐标轴的对数坐标图 |
loglog | 绘制X,Y轴均为对数坐标轴的图形 |
errorbar | 绘制带有误差棒的图 |
以plot为例,其基本调用方式是:
plot(x,y);
当然,也可以在plot等函数里对图像属性进行设置。
m_map工具箱中的大部分同类型图形绘制的函数与上述列表里的名称相同,不同的只是名称前需要加上m_调用。如plot函数在m_map工具箱里的调用方法即为m_plot。
4.轴属性设置常用函数
在坐标轴及图例属性设置中,常用的函数为xlabel、ylabel设置坐标轴标签;axis设置坐标轴位置;title设置标题属性;text可在图中任意位置添加文字;legend设置图例;subplot绘制子图。具体使用方法可参考官方文档。此处仅做简单的说明。
4.1 set与get函数
set函数用于设置句柄所指的图形对象的属性
如:
h=plot(x,y)set(h, 'Color',’b’)
get函数用于获取指定句柄的图形对象属性
如:
get(gca, 'Xcolor')
注意,如果没有设置句柄,则可以:
gcf:表示当前图形窗口的句柄
gca:表示当前坐标轴对象的句柄
gco:表示当前对象的句柄
4.2 坐标轴设置
可使用xlabel和ylabel函数设置坐标轴的单位。
其他针对坐标轴设置的可选项:
'Xtick','Ytick','Ztick':设置坐标轴小刻度的范围
'Xticklabel','Yticklabel','Zticklabel':设置坐标轴刻度标签的内容
可使用axis([xmin,xmax,ymin,ymax])函数来调整坐标轴的范围。
axis off:不显示坐标轴
axis on:显示坐标轴
因此,使用方法如下:
axis([0 37 0 54]);set(gca,'xtick',[0:50:200],'xticklabel',[],'fontname','TimesNew Roman','fontsize',12,'fontweight','bold','linewidth', 2);ylabel('℃');xlabel('hPa');
4.3 其他
title可设置图像的标题内容,调用方式:
title("这是一个标题")
text在图上任意位置添加标签,使用方法如:
text(30,50,'text内容','color','k','FontSize',13)%30,50数字表示位置
legend设置图例属性,可更改图例标签名称:
legend('Jan','Feb','Mar')
subplot绘制子图:
h =subplot(m,n,p)%m为行 n为列 p代表图形是m*n个图像中的第p个。
篇幅所限,一些设置颜色,字体,线型的内容在此处就不展开了,下期美化课讲colorbar的设置时一并介绍~
这里的内容对你来说太基础了,不能解决你的问题?没关系,小编已经为大家准备了各种疑难杂症的解决方法,复制下列链接到浏览器浏览,疑难杂症不再难!
微信不能打开外部链接,烦请各位复制链接至浏览器食用~
MATLAB气象海洋简单粗暴教程:by:二爷名声在外
http://bbs.06climate.com/forum.php?mod=viewthread&tid=57578
利用MATLAB对海洋要素作图时常用到的命令:by:海洋草履虫
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94494
风玫瑰图MATLAB程序:by:wpp851118
http://bbs.06climate.com/forum.php?mod=viewthread&tid=24227
rose函数绘制风玫瑰图示例:by:Aires
http://bbs.06climate.com/forum.php?mod=viewthread&tid=18581
画风玫瑰图的程序及数据说明:by:西北狼
http://bbs.06climate.com/forum.php?mod=viewthread&tid=39722
m_map画风向标:by:二爷名声在外
http://bbs.06climate.com/forum.php?mod=viewthread&tid=51373
彩色流线quiver:by:磨人的小妖精儿
http://bbs.06climate.com/forum.php?mod=viewthread&tid=53500
MATLAB绘制凤羽图:by:liuyao
http://bbs.06climate.com/forum.php?mod=viewthread&tid=97149
利用MATLAB画垂直风廓线风羽图:by:cqhawk
http://bbs.06climate.com/forum.php?mod=viewthread&tid=35934
MATLAB画风廓线雷达风羽图:by:小猪巴斯蒂安
http://bbs.06climate.com/forum.php?mod=viewthread&tid=93907
MATLAB画风羽图:by:ρδτ
http://bbs.06climate.com/forum.php?mod=viewthread&tid=50041
m_map画流线:by:二爷名声在外
http://bbs.06climate.com/forum.php?mod=viewthread&tid=54071
MATLAB风场添加箭头标签的方法:by:沙颖凯
http://bbs.06climate.com/forum.php?mod=viewthread&tid=21699
MATLAB画误差阴影图:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=24954
m_map工具箱里面画矩形:by:二爷名声在外
http://bbs.06climate.com/forum.php?mod=viewthread&tid=59653
MATLAB地图上绘制矩形框:by:haobang008
http://bbs.06climate.com/forum.php?mod=viewthread&tid=45337
MATLAB画三维地形图:by:wlzhongouc
http://bbs.06climate.com/forum.php?mod=viewthread&tid=7510
[求助]MATLAB做三维图:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94292
MATLAB画三维地形图(附带最新版的m_map):by:llw
http://bbs.06climate.com/forum.php?mod=viewthread&tid=67051
将2D全球平面地图画在3D球状地球上 Plot earth in 3D:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=40003
MATLAB 展示SCS三维海底地形图:by:Hua_Zhang
http://bbs.06climate.com/forum.php?mod=viewthread&tid=92235
泰勒图绘制:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=35864
[求助]MATLAB气象泰勒图:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=59356
MATLAB绘制类型图:by:wlzhongouc
http://bbs.06climate.com/forum.php?mod=viewthread&tid=7337
用MATLAB绘制动图:by:是兜兜啊
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94383
MATLAB画SkewT-logP图:by:47779125
http://bbs.06climate.com/forum.php?mod=viewthread&tid=27252
HYSPLIT轨迹模式结果 & MATLAB 画轨迹追踪图:by:cfltwy
http://bbs.06climate.com/forum.php?mod=viewthread&tid=53626
把手教你MATLAB绘制GFS Grib2资料天气图:by:又是那隻貓
http://bbs.06climate.com/forum.php?mod=viewthread&tid=31733
利用MATLAB的m_map工具箱绘制站点气象要素等值线分布图:by:1434272731
http://bbs.06climate.com/forum.php?mod=viewthread&tid=39282
MATLAB斜温图、高空测风绘制函数:by:沙颖凯
http://bbs.06climate.com/forum.php?mod=viewthread&tid=27066
MATLAB 利用SODA数据绘制南中国海SCS四季流场图:by:Hua_Zhang
http://bbs.06climate.com/forum.php?mod=viewthread&tid=92239
利用MATLAB对CALIPSO中VFM数据绘图与结果讨论:by:kongfeng0824
http://bbs.06climate.com/forum.php?mod=viewthread&tid=15999
MATLAB丨绘制对数坐标剖面图(含代码、注释、数据、函数、参考链接等):by:Chwithin
http://bbs.06climate.com/forum.php?mod=viewthread&tid=96669
MATLAB画时间剖面图:by:windprofiler
http://bbs.06climate.com/forum.php?mod=viewthread&tid=8414
MATLAB丨绘制引导气流回归场(风场矢量)并进行显著性检验(含代码和数据):by:Chwithin
http://bbs.06climate.com/forum.php?mod=viewthread&tid=96795
利用nc数据画sst等值线图,外另加流场图:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=21171
水深数据+海岸线数据提取绘图(海洋科学): by:Aires
http://bbs.06climate.com/forum.php?mod=viewthread&tid=10281
M_map绘制台风路径的一个实例_新手入门笔记:by:Wenfang
http://bbs.06climate.com/forum.php?mod=viewthread&tid=49995
分享一个绘台风路径的m程序:by:lnsyyzp
http://bbs.06climate.com/forum.php?mod=viewthread&tid=5100
[讨论] 使用m_streamline出现问题:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=96640
[求助]MATLAB用contourf画图,如何去掉黑色的轮廓线:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=35837
[求助]请问怎么绘制这种因子重要性的图
http://bbs.06climate.com/forum.php?mod=viewthread&tid=95954
[求助]MATLAB subplot怎么在多幅子图只显示一个colorbar
http://bbs.06climate.com/forum.php?mod=viewthread&tid=35888
[求助]MATLAB子图间距问题:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=94257
[求助]MATLAB利用nc数据画图出现空白缝隙:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=25027
[求助]MATLAB画出平滑的等值线分布图:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=88643
[求助]显著性区域打点填充:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=39807
[求助] 如何MATLAB画出这样的坐标轴:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=68189
MATLAB更改x轴日期表示形式--图窗法:by:652554221
http://bbs.06climate.com/forum.php?mod=viewthread&tid=93974
分享一个将figure中axes图像的局部放大功能在同一个axes上的小程序:by:最后一个匈奴
http://bbs.06climate.com/forum.php?mod=viewthread&tid=40634
MATLAB美化出图工具MATLAB_plot_cbrewer:by:geyeni
http://bbs.06climate.com/forum.php?mod=viewthread&tid=31633
MATLAB精彩绘图资料:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=12289
回馈气象家园,奉献手中全部MATLAB资料:by:龙行天下
http://bbs.06climate.com/forum.php?mod=viewthread&tid=17750
MATLAB图形保存方法【总结】(save figure):by:kongfeng0824
http://bbs.06climate.com/forum.php?mod=viewthread&tid=16068
matlab官方帮助文档:
https://ww2.mathworks.cn/help/matlab/graphics.html?s_tid=CRUX_lftnav
![d1a48e732647a6bc3aeaf45755b213f4.gif](https://i-blog.csdnimg.cn/blog_migrate/be325bc389290445d8f3d7b2fa38d7bc.gif)
本期内容到此结束!意犹未尽?
欢迎到家园 Matlab板块,一起讨论你的疑问吧!
http://bbs.06climate.com/
排版:pique号上的送别