使用MATLAB画SCI论文图

news2024/12/28 20:36:36

从gcf和gca说起

不论是 Python 绘图还是Matlab绘图,想要获得更好看的图,都会用到这两个单词。

gcf:get current figure,是目标图像的图形句柄对象
gca:get current axes,是目标图像的坐标轴句柄对象

Matlab 同样支持面向对象编程。在 Matlab 打开一个绘图窗口或画一张图后输入 gcfgca 就会获得当前图像对象或当前坐标轴对象的属性。

gcf
gca
事实上,当 MATLAB 创建一个绘图时,它会创建一系列的图形对象,有图窗、坐标区、线条、填充、文本和图例等等对象。
下面的例子有三个图形对象 —— 一个坐标区、一条线条和一个文本对象,使用可选输出参数可以存储所创建的图形对象。

x = -pi:pi/20:pi;
y = sin(x);

f = figure;
p = plot(x,y);
txt1 = text(0.2,0,'sin(x)');

sin(x)
所有图形对象均有可以查看和修改的属性,这些属性具有默认值。

若要访问图形对象的个别属性,请使用圆点表示法语法 object.PropertyName。例如,返回线条对象的 LineWidth 属性。

pcol = p.LineWidth

通过设置线条的 Color 属性将其颜色更改为红色。

p.Color = 'red';

通用函数get和set

当查看和修改对象的很多属性时,上面的方法就不适用了,Matlab 中有 getset 函数用于获取对象的属性和设置对象的属性。

使用方法:

v = get(h):返回 h 标识的图形对象的所有属性和属性值, v 是一个结构体;
v = get(h,propertyName1,propertyName2,···):返回特定属性 propertyName1,propertyName2,··· 的值,使用时须用单引号将属性名引起来 ;
使用 getset 函数时,MATLAB 识别一个属性时是不分大小写的。另外,只要用足够多的字符来唯一地辨识一个属性名即可。例如,坐标轴对象中的位置属性可以用 ‘Position’,‘position’,甚至是 ‘pos’ 来调用。
set(H,propertyName1,Value1,propertyName2,Value2,···):为 H 标识的对象指定其属性的值
s = set(H):返回 H 标识的对象的、可由用户设置的属性及其可能的值。

父类与子类

MATLAB 按一定的层次结构排列图形对象。层次结构的顶部是称为图形根的特殊对象。若要访问图形根,请使用 groot 函数。
groot 定义了 figure 可以用的最大 szie。groot 下面是 figure。figue 就是你画图的时候跳出来的那个新的对话窗口。如果 figure 变化,groot 是不会跟着变化的。但 groot 变化的话,figure 就要跟着变化了。

figure 下面是 axes,line,text,legend 等等。axes 是那个窗口 figure 里面你要画的东西。axes 的大小和位置取决于 figure,如果放大缩小 figure 的大小,里面的图像也会跟着变化的。

line,text,legend 等等就是你用指令在图上加的东西。

所有图形对象(除了根)均有一个父级。例如,坐标区的父级是一个图窗。

h.Parenth.Children 可获得图形对象的父级和子级。例如下面这张图有八个子级—— 5 个坐标轴对象,2 个图例对象,1 个颜色条对象。

复杂图

>> f.Children

ans = 

    8×1 graphics 数组:

    Axes
    Axes
    Legend      (data1)
    Axes
    Axes
    ColorBar
    Legend      (data1, data2)
    Axes        (aaaa)

因为 figure 有多个子级,Children 属性的值是一个图形对象数组。要访问 figure 的个别子级,请对数组建立索引。然后,可以设置子级对象的属性。

t = f.Children(8);       % get the 'aaaa' Axes object
t.FontWeight = 'bold';    % set the font to bold
t.Children;              % view 'aaaa' Axes object's Children

ans = 

    2×1 Line 数组:

    Line    (data2)
    Line    (data1)

常用属性

当了解以上知识后,理论上,只要知道图形对象的各种属性就可以制作出想要的效果。事实上,当知道这些属性时,在 plot,text,legend···时加上这些参数也可以。
下面给出常用对象的常用属性表以及可选参数

figure 常用属性

‘Number’:图窗编号
‘Name’:图窗名字
‘Color’:背景颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称
‘Position’:可绘制区域的位置和大小,[left bottom width height]
‘Units’:测量单位,可选择’pixels’ (默认)| ‘normalized’ | ‘inches’ | ‘centimeters’ | ‘points’ | ‘characters’
‘MenuBar’:Figure 菜单栏显示方式,可选择’figure’ (默认)| ‘none’
‘ToolBar’:Figure 工具栏显示,可选择’auto’ (默认)| ‘figure’ | ‘none’
‘Resize’:图窗能否调整大小,‘on’ (默认)| ‘off’

axes 常用属性

‘FontName’:字体名称,可选支持的字体名称 | ‘FixedWidth’
‘FontWeight’:字符粗细,‘normal’ (默认)| ‘bold’
‘FontSize’:字体大小,数值标量
‘FontAngle’:字符倾斜,‘normal’(默认)| ‘italic’
‘XTick, YTick, ZTick’:刻度值,[](默认)| 由递增值组成的向量
‘XTickLabel, YTickLabel, ZTickLabel’:刻度标签,‘’(默认)| 字符向量元胞数组 | 字符串数组 | 分类数组
刻度值是坐标轴上显示刻度线的位置,刻度标签是你在每个刻度线旁边看到的标签。
‘XLim, YLim, ZLim’:最小和最大坐标轴范围,[0 1] (默认)| [min max] 形式的二元素向量
‘XAxisLocation’:x 轴位置,‘bottom’ (默认)| ‘top’ | ‘origin’
‘YAxisLocation’:y 轴位置,‘left’ (默认)| ‘right’ | ‘origin’
‘XGrid, YGrid, ZGrid’:网格线,‘off’ (默认)| on
‘GridLineStyle’:网格线的线型,‘-’ (默认)| ‘–’ | ‘:’ | ‘-.’ | ‘none’
‘GridColor’:网格线的颜色,[0.15 0.15 0.15] (默认)| RGB 三元组 | 十六进制颜色代码 | ‘r’ | ‘g’ | ‘b’ | …
‘Title’:标题的文本对象
‘Color’:背景色,[1 1 1] (默认)| RGB 三元组 | 十六进制颜色代码 | ‘r’ | ‘g’ | ‘b’ | …
‘LineWidth’:线条宽度,0.5 (默认)| 正数值
‘Box’:框轮廓,‘off’ (默认)| ‘on’
‘Position’:大小和位置,不包括标签边距,[0.1300 0.1100 0.7750 0.8150] (默认)| [left bottom width height] 形式的四元素向量

legend 常用属性

‘Location’:相对于坐标区的位置,‘north’ | ‘south’ | ‘east’ | ‘west’ | ‘northeast’ | …
‘Position’:自定义位置和大小,[left bottom width height] 形式的四元素向量
‘Orientation’:方向,‘vertical’ (默认)| ‘horizontal’
‘NumColumns’:列数,1 (默认)| 正整数
‘FontName’:字体名称,支持的字体名称 | ‘FixedWidth’
‘FontSize’:字体大小,大于 0 的标量值
‘Color’:背景色,[1 1 1] (默认)| RGB 三元组 | 十六进制颜色代码 | ‘r’ | ‘g’ | ‘b’ | …
‘EdgeColor’:框轮廓颜色,[0.15 0.15 0.15] (默认)| RGB 三元组 | 十六进制颜色代码 | ‘r’ | ‘g’ | ‘b’ | …
‘Box’:框轮廓的显示,‘on’ (默认)| ‘off’
‘LineWidth’:框轮廓的宽度,0.5 (默认)| 正值

line属性

‘Color’:线条颜色,[0 0 0] (默认)| RGB 三元组 | 十六进制颜色代码 | ‘r’ | ‘g’ | ‘b’ | …
‘LineStyle’:线型,‘-’ (默认)| ‘–’ | ‘:’ | ‘-.’ | ‘none’
‘LineWidth’:线条宽度,0.5 (默认)| 正值
‘Marker’:标记符号,‘none’ (默认)| ‘o’ | ‘+’ | ‘*’ | ‘.’ | …
‘MarkerIndices’:要显示标记的数据点的索引,1:length(YData) (默认)| 正整数向量 | 正整数标量
‘MarkerSize’:标记大小,6 (默认)| 正值

事实上,figure,axes,legend 都有 Position,FontName,Fontsize,Color 等属性,它们的意思是一样的,参数形式也是一样的,只是代表了这个对象的属性和那个对象的属性

Simulink 示波器

Simulink 示波器也是对象,使用如下指令就可以打开示波器的绘图菜单,进行绘图操作

shh = get(0,'ShowHiddenHandles');
set(0,'ShowHiddenHandles','On');
set(gcf,'menubar','figure');
set(gcf,'CloseRequestFcn','closereq');
set(gcf,'DefaultLineClipping','Off');
set(0,'ShowHiddenHandles',shh);

绘图例子

下面是绘制一个单列的图片代码示例

clear all
figure(2)
set(gcf,'unit','centimeters','position',[10 5 8.4 10]); % 设置窗口位置[10cm,5cm]和大小8.4cm*10cm
set(gcf,'ToolBar','none','ReSize','off');   % 移除工具栏,不可调整大小
set(gcf,'color','w'); % 背景设为白色
% 以上也可在 编辑->图窗属性->窗口外观和位置 设置
 
t=0:0.1:1;
y1=t;
y2=t.^2;
y3=t+0.1;
y4=t.^4+0.1;
 
subplot(2,1,1) 
 
p1 = plot(t,y1,'b--','LineWidth',1.5);
hold on
p2 = plot(t,y2,'color',[0 0.81 0.82],'LineWidth',1.5);
set(gca,'Position',[0.14 0.52 0.83 0.33]);%第(1)个图的位置
g = get(p1,'Parent');%对应p1所在的坐标轴
set(g,'Linewidth',1.5,'FontSize',10,'FontName','Arial','FontWeight','bold');
ylabel('Error [m]','FontSize',10,'FontName','Arial','FontWeight','bold');
ylim([0,2])
%xlabel('t [s]','FontSize',10,'FontName','Arial','FontWeight','bold');
set(g,'XTick',[]); %隐藏X坐标轴

subplot(2,1,2) 

p3 = plot(t,y3,'r--','LineWidth',1.5);
hold on
p4 = plot(t,y4,'color',[0 0.3 0.82],'LineWidth',1.5);
set(gca,'Position',[0.14 0.16 0.83 0.33]);%第(3)个图的位置
g = get(p4,'Parent');%对应p1所在的坐标轴
set(g,'Linewidth',1.5,'FontSize',10,'FontName','Arial','FontWeight','bold');
ylim([0,2])
ylabel('Error [m]','FontSize',10,'FontName','Arial','FontWeight','bold');
xlabel({'t [s]','(a)'},'FontSize',10,'FontName','Arial','FontWeight','bold'); %{}作为换行给图标号
 
h1=legend([p1 p2 p3 p4],'\fontname{Arial}y_1','\fontname{Arial}y_2','\fontname{Arial}y_3',...
    '\fontname{Arial}y_4','Orientation','horizontal');
set(h1,'Linewidth',1.5,'FontSize',10,'FontWeight','bold');
set(h1,'position',[0.4,0.9,0.2,0.1]);%legend位置
set(h1,'Box','off');

当使用 Matlab 编写程序代码时,遇到行数较长的情况,如果不换行,将使得代码不易阅读,这时可以进行换行。但换行不是简单的用回车进行,需要增添 … ,表示连接下一行

导出SCI论文能用的图

先在渲染处设置一下 dpi,SCI 论文都要求 dpi 300 以上,再导出为 tiff 格式(SCI论文推荐用这个),这样得到的图片怎样放缩都不会模糊,用 Latex 写论文可导出为 pdf 或者 eps 格式。

dpi设置

tiff格式

在这里插入图片描述
也可以指令导出,print(figure_handle,fileformat,'-r300',filename),其中的四个参数:

a、figure_handle: 图形句柄

b、fileformat:单引号字符串,指定存储格式:
png 格式: ‘-dpng’
jpeg 格式:‘-djpeg’
tiff 格式: ‘-dtiff’
pdf 格式: ‘-dpdf’
bmp 格式: ‘-dbitmap’
gif 格式:‘-dgif’
emf 无损格式:‘-dmeta’

c、‘-r300’:期望 dpi 300

d、 filename:文件名,可带路径,不设置就存当前文件夹。

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

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

相关文章

pandas---数学函数、离散化处理、分组聚合

1. 数学函数 方差:当数据分布比较分散(即数据在平均数附近波动较大)时,各个数据与平均数的差的平方和 较大,方差就较大;当数据分布比较集中时,各个数据与平均数的差的平方和较小。因此方差越 …

【计算机网络】如何学好计网-第一章概论

相关术语 URI:Uniform Resource Identifier 统一资源标识符,指的是一个资源 URL:Uniform Resource Location 统一资源定位符,URI的子集,用地址定为的方式指定一个资源 URN:Uniform Resource Name 统一资…

北京论道|光环云李卓然:以“云”为帆 赋能文化出海行业创新增长

2023年6月15~16日,由流媒体网主办,北京新媒体(集团)有限公司、北京联通、北京电信、北京移动共同协办的「北京论道暨第25届中国智能视听与科技创新高峰论坛」在北京隆重举行。 本届论道以“电视的未来与未来的电视”为主题&#…

java语言中方法的重载

文章目录 前言一、重载是什么?二、使用步骤 1.实操展示2.注意事项总结 前言 小时候,我们学会了十以内的加法,却对十以外的加法感到害怕,但从现在来看,它们都属于加法,只是计算方法略有不同。方法的重载也一…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(IV)

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

Computer Graphics From Scratch - Chapter 9

系列文章目录 简介:Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章:Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章:Computer Gr…

IEEE 最佳论文提名 | TraND:用步态算法优化身份识别

来源:投稿 作者:小灰灰 编辑:学姐 论文标题:TraND: Transferable Neighborhood Discovery for Unsupervised Cross-domain Gait Recognition 论文链接: https://arxiv.org/pdf/2102.04621v1.pdf 步态识别开始应用在公共场域身份…

centos mysql安装配置远程访问

包含以下三个部分:mysql安装,mysql密码重置、mysql配置远程访问。 一 centos安装mysql 1、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2、yum -y install mysql57-community-release-el7-10.noarch.rpm 3、yum…

to be delete

一、grafana版本升级 1.1 还是先跟着官网简单走一波 建议经常升级Grafana,以获取最新的修补程序和增强功能。 为了实现这一点,Grafana升级向后兼容,并且升级过程简单快捷。升级通常是安全的(在许多次要版本和一个主要版本之间&a…

Python习题进阶

1.十六进制数字的大小 描述 计算的世界,除了二进制与十进制,使用最多的就是十六进制了,现在使用input读入一个十六进制的数字,输出它的十进制数字是多少? 输入描述: input读入一个十六进制数字&#xf…

微信支付服务商接入指引(企业)

目录 一、官方指引二、申请流程1.进入服务商平台2.填写资料3.账户验证&资料审核 三、登录 一、官方指引 https://kf.qq.com/faq/161220iqeAfA1612202yeURB.html 二、申请流程 1.进入服务商平台 https://pay.weixin.qq.com/static/partner_guide/service_provider.shtml…

【JVM快速入门篇】

本笔记内容为狂神说JVM快速入门篇部分 目录 一、JVM的位置 二、JVM体系结构 三、类加载器(ClassLoader) 四、双亲委派机制 双亲委派机制的作用 五、沙箱安全机制 六、Native ​编辑Native Method Stack 本机方法栈 Native Ilnterface本地接口…

低代码靠谱吗?实操一遍就知道了

一、前言 最近一段时间,“低代码”概念特别流行,有些人特别推崇它,也有些人对此不屑一顾。 推崇它的人认为,它有很多优点,比如说能够降低开发周期,提高系统开发效率,降低开发成本,学…

使用HBuilder将h5网站打包成app 自行打包

1、点击manifest.json,基础配置,APP名字,是否全面屏 2、然后点击图标配置,选好后点自动生成所有图标并替换 点击模块配置,选VideoPlayer和X5内核 然后顶部菜单选发行,选择原生App-云打包 选公测证书然后…

WPF教程-XAML介绍

XAML介绍 1.定义 为构建应用程序用户界面而创建的一种新的“可扩展应用程序标记语言”,提供一种便于扩展和定位的语法来定义和程序业务逻辑分离的用户界面。 XAML 是一种 XML(Extensible Markup Language)的扩展,XAML 是 WPF 中…

云计算——云计算与虚拟化的关系

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.虚拟化 1.什么是虚拟化 2.虚拟化技术作用 二.云计算与虚拟化的关系 三.虚…

一文让非技术宅读懂为什么AI更“喜欢”GPU而不是CPU?

一、引言 随着人工智能(AI)技术的快速发展,深度学习等算法在图像识别、自然语言处理、数据挖掘等方面表现出了强大的能力。而这些算法的底层计算,往往对硬件有着极高的要求。为了满足这些需求,越来越多的研究和工程实…

关于不同型号电脑谷歌浏览器下载指定版本的方法(超详细教程)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1、根据链接打开地址2、页面说明3、下载过程(1)选中指定版本点击它(这里以52.0.27.37.1为例)(2&…

美国访学博后答疑|尚未出国DS-2019表格过期了怎么办?

美国执J1签证者尚未出国,但DS-2019表格过期了怎么办?本篇知识人网老师就以下三种情况,统一做答疑建议。 美国访问学者和博士后的签证类型多是J1签证,需要由美国接收方将签字后的DS2019表邮寄给国内,申请者本人在表格正…

多项安全新功能为云上安全保驾护航,就在亚马逊云科技re:Inforce全球大会

亚马逊云科技re:Inforce 2023全球大会于当地时间2023年6月13日在美国加州安纳海姆拉开帷幕。在大会上,亚马逊云科技宣布推出十多项安全新服务及功能,下面就来一览本次大会的风采。 “Security is our top priority.” “安全是我们的首要优先级”&#…