MATLAB画图详细教程

本文将详细介绍如何用matlab绘图并美化。

关于figure()

创建图窗窗口:figure()

figure()的属性:

'Name':在标题栏显示的名称,接字符串,如'Test'

'Position':在电脑屏幕上的位置和大小,后接向量[left,bottom,width,height]也就是说指定了图窗的左下角位置,再向右+width、向上+height延伸。

'unit':单位,可以选择'normalized',使得位置参数为屏幕的归一化位置,屏幕归一化坐标(x,y),(0,0)表示左下角,(1,1)表示右上角。

我的桌面

'color':图窗背景颜色,'red'、'green'、'blue'、'cyan'、'magenta'、'yellow'、'black'、'white' 和 'none',其中none表示透明。或者RGB三通道表示法[R,G,B],其中三分量都要归一化到1,即R/255,G/255,B/255。

https://ww2.mathworks.cn/help/matlab/ref/figure.html

例如:

fullfig=figure('Name','Hello','unit','normalized','Position',[0.1, 0.1, 0.3, 0.7],'color',[100/255,100/255,100/255]);

将会产生左下角位置在[0.1,0.1]、长0.3宽0.7的图窗,其名字为'Hello',其背景颜色为[100/255,100/255,100/255]也就是灰色。

 

关于plot()

plot(x,y)画图

'LineWidth',线条宽度,最小是1

'color',线条颜色,同上

'LineSpec',这里直接表示线的形状,不用写'LineSpec'

https://www.mathworks.com/help/matlab/ref/linespec.html

   'MarkerSize'、'MarkerEdgeColor'、 'MarkerFaceColor':如果线形使用Marker,可以调节大小、边界颜色、内部颜色

 

例如,

>> x=0:1/pi:2*pi;

>> y=sin(x);

>> plot(x,y,'--bo','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red')

表示画一条如下图所示的正弦函数,'--bo'表示虚线、蓝色、采样点用圆圈标出。线形和点形以及颜色可以自由组合。

 

关于图注、图例、坐标轴、字体大小

命名横纵坐标

a=xlabel('Name of x axis');b=ylabel('Name of y axis');

设置标题

c=title('contents of your title');

设置图例

d=legend('y1','y2');

设置上述内容的位置、字体大小、粗细

set(a,'unit','normalized','Position',[x,y],'FontSize',number_fontsize,'FontName',name_of_font_style)

set(a,'unit','normalized','Position',[x,y,width,height],'FontSize',number_fontsize,'FontName',name_of_font_style,'LineWidth',number_linewidth);

示例:

>> x=0:1/pi:2*pi;

>> y1=sin(x);y2=cos(x);

%创建图窗%

>> figure('color','white')

%画sin(x)和cos(x)图%

>> plot(x,y1,'--bo','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red');

>> hold on;plot(x,y2,'--g*','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red');

%创建坐标轴、标题、图例的对象

>> a=xlabel('x (time)');b=ylabel('y (m)');c=title('sin(x) and cos(x)');d=legend('sin(x)','cos(x)');

%位置、大小、字体大小、字体样式设置

>> set(a,'unit','normalized','Position',[0,-0.05],'fontsize',15,'fontname','Times New Roman');

>> set(b,'unit','normalized','Position',[-0.05,1],'fontsize',15,'fontname','Times New Roman');

>> set(c,'fontsize',15,'fontname','Times New Roman');

>> set(d,'unit','normalized','Position',[0.2,0.2,0.1,0.1],'fontsize',10)

%图窗所有线条粗细设置为2

>> set(gca,'LineWidth',2)

%开启网格

>> grid on;

%设置x轴、y轴的显示范围

>> xlim([0 2*pi])

>> ylim([-1.1 1.1])

%注:如果想画到上限,只需用+inf代替上限

 

 

关于非常规坐标轴

>> set(gca,'YDir','reverse');

>> set(gca,'YDir','normal');

y坐标轴反向或正常

 

半对数、对数画图

semilogx(x,y);loglog(x,y)

 

关于参考线、参考点、标注点

横线实现方式:

利用ones(m,n)生成与y相同的纯1向量,再给它乘上你要标注的数

size(y)返回y的行列值对(m,n),

例如标y=0的浅色虚线:

>> hold on;plot(x,0*ones(size(y)),'--','LineWidth',1,'color',[100/255,100/255,100/255]);

竖线实现方式:

利用plot()两点成线

plot([x0,x0],[y_min,y_max]);

例如在Pi/2处画从0到1的竖虚线:

>> hold on;plot([pi/2,pi/2],[0,1],'--','LineWidth',1,'color',[100/255,100/255,100/255]);

 

小细节:如果先加图例,图例会把你画的横竖线也标上'data 1','data 2'。如果画完参考线再加legend,legend只会标注标签名数量个数据,就不会出现把参考线也标上的情况。

 

标注文字:text(x,y,'contents')

>> text(pi,0,'\leftarrow sin(\pi)','fontsize',15);

 

多个图:subplot(m,n,index)由matlab根据选定的m行n列自动设置子图尺寸

https://ww2.mathworks.cn/help/matlab/ref/subplot.html

或者需要精细化设置位置:

%设置当前图窗单位为归一化

>> set(gcf,'color','none','unit','normalized','position',[0,0,1,1]);

%设置左下角出现在(0.2,0.22)位置,宽0.55,高0.4

>> positionVector1 = [0.2, 0.55, 0.22, 0.4]; subplot('Position',positionVector)

 

这里画子图下面的操作和上面都一样,唯一要记住的是,每一个subplot,都相当于一个figure(),这就是说,你在每个subplot下面写的xlabel、title、legend之类的,都只会设置subplot下面的图。

子图示例:

%子图一

%设置子图位置

positionVector1 = [0.2, 0.55, 0.22, 0.4];

subplot('Position',positionVector1)

%画图

plot(A(:,2),(A(:,1)/1000),'LineWidth',2,'color','black');

%画参考线

hold on;plot(zeros(size(A(:,2))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);

%设置坐标轴范围

ylim([0 6371]);xlim([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))]);

%画参考线

hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])

%给坐标轴命名

ylabel('r (km)');xlabel('U(r)'); set(gca,'YDir','reverse');

%修改子图线条粗细

set(gca,'LineWidth',3,'fontsize',15);

 

positionVector2 = [0.58, 0.55, 0.22, 0.4];

subplot('Position',positionVector2)

plot(A(:,3),(A(:,1)/1000),'LineWidth',2,'color','black');

hold on;plot(zeros(size(A(:,3))),flip(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);

ylim([0 6371]);xlim([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))])

hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])

ylabel('raduis (km)');xlabel('dU(r)/dr'); %set(gca,'YDir','reverse');

set(gca,'LineWidth',3,'fontsize',15);

 

positionVector3 = [0.2, 0.07, 0.22, 0.4];

subplot('Position',positionVector3)

plot(zeros(size(A(:,1))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);

ylim([0 6371]);xlim([-1 1])

hold on;plot([-1 1],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-1 1],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-1 1],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])

ylabel('raduis (km)');xlabel('V(r)'); %set(gca,'YDir','reverse');

set(gca,'LineWidth',3,'fontsize',15);

 

positionVector4 = [0.58, 0.07, 0.22, 0.4];

subplot('Position',positionVector4)

plot(zeros(size(A(:,1))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);

ylim([0 6371]);xlim([-1 1])

hold on;plot([-1 1],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-1 1],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])

hold on;plot([-1 1],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])

ylabel('raduis (km)');xlabel('dV(r)/dr');% set(gca,'YDir','reverse');

set(gca,'LineWidth',3,'fontsize',15);

%设置总标题

name=['_{' num2str(n) '}S_{' num2str(l) '}'];%latex

sgt =sgtitle(name);sgt.FontSize = 30;

%加文字

config=[ 'Eigf=' num2str(Eigf) ',Gv=' num2str(Gv) ',Q=' num2str(Q) 'Err=' num2str(Err)];

suptitle(config);  

%保存图片 

I=getimage(gcf);

pngname=[ num2str(n) 'S' num2str(l)];

saveas(fullfig,[filepath pngname '.png']);

最后成图:

 

那么如何给图加标题呢?

matlab2020之前有suptitle函数,matlab2020有sgtitle函数,和title函数差不多。

 

另外还有画三维图时加colorbar的细节,

https://www.mathworks.com/help/matlab/ref/colorbar.html

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构...

表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的DAO层就是将访问数据库的代码,数据库层是数据存储与管理…

python封装exe如何返回上一步_如何将python脚本封装成exe程序?

我们在编写代码时候,,有没有想过怎么去运行这个代码,绝非是在编程软件里的预览哦。而是让用户去使用,绝对要成一个安装包,如果刚刚入门的小伙伴,肯定没有想过这些,因为大部分人,还处…

android 发送广播_从0系统学Android--5.2 发送广播

从0系统学Android--52 发送广播本系列文章目录:更多精品文章分类本系列持续更新中…. 初级阶段内容参考《第一行代码》5.3 发送自定义广播前面已经学习了如何接受广播了,下面来学习如何发送自定义广播,广播类型分为:标准广播和有序…

31页官方PPT,回顾史上最大芯片WSE:科技的壮丽美感!

来源:芯潮2019年8月20日,在Hot Chips顶会上,发布了一款震惊世界的芯片:全球有史以来最大的计算机芯片wafer-scale engine (WSE)问世!这款巨型芯片来自美国创企Cerebras,每边约22厘米…

Node.js npm 详解

一、npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍。 npm的全称:Node Package Manager. ####(1)通俗的理解 其实从字面意…

html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注

对图片添加标注和文字是科研图片处理中一个非常基础的操作,Image J也可以进行这方面的处理。 01利用描边和填充添加 在绘制好选区(几乎只会用到箭头工具)之后选择:Edit-Draw(描边,快捷键Ctrl+D),使用事先设定好的颜色和粗细进行绘制;也可以填充设定好的颜色Edit-Fill(填充…

怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML

create:创建表创建用户创建视图创建表create table student(id int,score int) ;student后面与括号之间可以有空格可以没有创建用户create user liuyifei identified by 4852396;drop:删除整个表、删除指定的用户、删除指定的存储空间drop table table_n…

再谈智能

来源:人机与认知实验室1. 智能的产生1.1 智能生成机理有关智能生成的机理,一直是许多领域关注的焦点问题,涉及面之广、深很是少见,初步梳理可能会与这样几个最基本的问题有关:认知生成的机理、知识生成的机理、意…

的图片怎么循环渲染_十分钟教你做个炫酷的图片切换过度效果

做个炫酷的图片切换过度效果首先,今天是520节日。到了520这类为情侣准备的节日,小编都会感到一万点暴击……首先酸一波,搞点事情(蹭波热度)。给大家分享一个520特效页面:看完记得回来为小编点个赞哦!这是案例请扫前言老…

8 线程安全且高效的单例模式

(1)双检查 if(instance null){//一次检查 synchronized (MySingleton.class) { if(instance null){//二次检查 instance new MySingleton(); } } (2)静态…

《自然》:修复AI神经网络的缺陷

来源:王宏琳科学网博客我在上一篇《海外观察》博客中,介绍了纽约大学马库斯教授和戴维斯教授的新书《重启 AI:构建我们可以信任的人工智能》和图灵奖得主朱迪亚•珀尔的著作《为什么:关于因果关系的新科学》。这两本书都分析了以深…

python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)

这篇文章主要介绍了在Python中画图(基于Jupyter notebook的魔法函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先展示一段相关的代码: #we test the accuracy of knn and find the k which ma…

三. 自动化测试用例设计

1. 主要内容: 2. 手工测试用例与自动化测试用例区别 目前自动化测试更多的时候是定位在冒烟测试和回归测试; 冒烟测试执行的是主体功能点的用例。回归测试执行全部或部分的测试用例。3. 测试类型 4. 异常 5. WebDriver错误截图 get_screenshot_as_f…

c json保存整型数组,您如何存储“ int”? NSMutableArray *或NSMutableDictionary *中的值?整数形式的JSON数据的长期问题。...

How do you store "int" values in an NSMutableArray or NSMutableDictionary? Chronic problems with JSON data that come in as integers.Should I try to store these integers as NSNumber objects or just as strings that contain the integer?How dangero…

c++卸载工具_win7系统如何卸载office2007兼容包

win7系统如何卸载office2007兼容包?office2007是一款热门的办公软件,但有的朋友不习惯使用office2007,但是一些说电脑安装office2007软件后,想要更换其他版本的话,此前需要将office2007卸载掉,不知怎么卸载office2007…

人工智能伦理如何设定,从种群层面看人类的知识积累和进化

前言:9月份中宣部出版局《中国图书评论》对《崛起的超级智能》进行了推荐和评论,对其中阐述的种群知识库扩展观点给予了重点关注。应该说种群知识库扩展是互联网大脑架构不断发展的抽象推论,这个推论对于人工智能及其伦理的建立也应有相应的价…

[转] 三种Python下载url并保存文件的代码

原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的。 Python中最流行的方法就是通过Http利用urllib或者urllib2模块。 当然你也可以利用ftplib从ftp站点下载文件。此外Python还提供了另外一种方法requests。 来看看三种方法是如何来下载zip文件的&am…

北理课程 - 鸢尾花

刚开始尝试机器学习 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结前言 提示:这里可以添加本文要记录的大概内容&#xff1a…

text 两端对齐 小程序_小程序实现文字两端对齐

我们知道,text-align: justify;对最后一行无效,当有一个段落而最后一行只有两个字时,text-align: justify;的效果是前面N行两端对齐,最后一行居左,这样有利于用户的视觉体验,但是当我们只有一行文本&#x…

python可以这样学读后感_Python基础教程的读后感10篇

《Python基础教程》是一本由Magnus Lie Hetland著作,人民邮电出版社出版的平装图书,本书定价:69.00元,页数:471,文章吧小编精心整理的一些读者的读后感,希望对大家能有帮助。 《Python基础教程》…