使用MATLAB画SCI论文图

从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.Childrenans = 8×1 graphics 数组:AxesAxesLegend      (data1)AxesAxesColorBarLegend      (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 Childrenans = 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.hqwc.cn/news/13386.html

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

相关文章

基于条件风险价值CVaR的微网动态定价与调度策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

el-tab-pane 和el-tooltip及el-tree 组合使用

<el-tabs v-model"groupId" tab-click"handleClick"><el-tab-pane label"全部" name"0"></el-tab-pane><el-tab-pane v-for"items in editableTabs" :key"items.group_id" :name"item…

java项目之美食推荐管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的美食推荐管理系统。 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm&#xff0c;mybatis JDK版…

2.3 Web应用 -1 web 应用概述

2.3 Web应用 -1 web 应用概述 Web与HTTPHTTP协议概述 Web与HTTP World Wide Web: Tim Berners-Lee 网页网页互相链接 网页(Web Page)包含多个对象(objects) 对象&#xff1a;HTML文件、JPEG图片、视频文件、动态脚本等基本HTML文件&#xff1a;包含对其他对象引用的链接 对象的…

【MongoDB】

目录 MongoDB基本简介 MongoDB基本概念 MongoDB和关系数据库的对比 MongoDB数据类型 MongoDB元素命名规则 MongoDB安装部署 MongoDB配置管理 MongoDB服务管理 MongoDB 多实例配置 基本操作 集合 数据备份与恢复 MongoDB复制集集群部署及管理 MongoDB复制集ReplSe…

OPCUA 的历史数据库/聚合服务器的实现细节

进入了AI 大数据时代&#xff0c;无论是工业自动化系统&#xff0c;还是物联网系统&#xff0c;对大数据的采集&#xff0c;存储和分析都十分重要。大数据被称为工业的石油&#xff0c;未来制造业的持续改善离不开大数据。 传统的应用中&#xff0c;历史数据的存储是特定的数据…

Oracle存储过程的使用DEMO(一)

文章目录 Oracle存储过程的使用DEMO&#xff08;一&#xff09;1. Oracle中块的使用2. IF使用2.1 IF...ELSE...2.2 IF嵌套 3. CASE...WHEN...4. LOOP5. WHILE6. FOR Oracle存储过程的使用DEMO&#xff08;一&#xff09; 1. Oracle中块的使用 DECLAREI NUMBER; BEGINSELECT EM…

TPCE260PCIE转PMC载板

TPCE60是一个标准的高度PCI Express版本1.1兼容的模块&#xff0c;提供了一个槽用于安装标准PMC模块&#xff0c;灵活和成本有效的I/O解决方案的各种应用如过程控制、医疗系统、电信和交通控制。 桥接PCI Express x1连接到主机板和PCI总线信号的PMC槽之间是由透明的PCIe到PCI桥…

硬件性能 - 网络瓶颈分析

简介 本文章主要通过Linux命令查看网络信息、判断是否出现网络瓶颈等简单分析方法。其他硬件性能分析如下&#xff1a; 1. 硬件性能 - CPU瓶颈分析 2. 硬件性能 - 掌握内存知识 3. 硬件性能 - 磁盘瓶颈分析 目录 1. 监控命令 sar 2. 带宽利用率 3. 网络延迟 4. 网络连接数 …

云原生之深入解析K8S Istio Gateway服务的架构分析与实战操作

一、概述 Istio 提供一种简单的方式来为已部署的服务建立网络&#xff0c;该网络具有负载均衡、服务间认证、监控、网关等功能&#xff0c;而不需要对服务的代码做任何改动。 istio 适用于容器或虚拟机环境&#xff08;特别是 k8s&#xff09;&#xff0c;兼容异构架构&#x…

MV-Map论文研读

MV-Map MV-Map: Offboard HD-Map Generation with Multi-view Consistency 论文&#xff1a;https://arxiv.org/pdf/2305.08851.pdf code&#xff1a;https://github.com/ZiYang-xie/MV-Map 代码未开源 总体网络结构 简述 论文首次提出以非车载的方式产生高精度地图。可以…

5、加载3dtileset模型并定位到模型

这一节使用CCesium加载3dtiles模型&#xff0c;3dtiles模型使用ceisum官网示例中的模型&#xff0c;加载3dtiles功能目前只能添加没有压缩的模型&#xff0c;draco或其他解压缩功能没有写。 1、在上一个例子的基础上&#xff0c;将鼠标事件改成右键的鼠标事件Cesium::ScreenSp…