使用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.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:文件名,可带路径,不设置就存当前文件夹。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java 全局、局部异常处理详解及result结果封装

1、引入spring-boot-starter-web依赖和new-swagger依赖 <dependency><groupId>com.jjw</groupId><artifactId>new-swagger</artifactId><version>1.0-SNAPSHOT</version> </dependency> <dependency><groupId>or…

【Vue2】Vant2上传文件使用formData方式,base64图片转Blob再转File上传

文章目录 前言一、base64转换为 Blob 对象的方法二、使用步骤1.引入工具类js2.编写formData上传方法3.api方法中的request代码 三、实际操作1.html代码2.js代码 总结 前言 vant2上传组件传送门 使用vant2组件中的uploader组件 <van-uploader v-model"fileList" …

耳挂式骨传导耳机哪个牌子好,分享几个品牌的骨传导耳机

骨传导耳机就是利用震动来传递声音的耳机&#xff0c;在运动时佩戴骨传导耳机&#xff0c;可以听歌也能听周围的声音&#xff0c;提高了运动时的安全性。目前市面上的骨传导耳机也是琳琅满目。今天就来给大家分享下目前市面上比较常见的几款骨传导耳机。希望对正在选购骨传导耳…

什么是kafka,如何学习kafka,整合SpringBoot

目录 一、什么是Kafka&#xff0c;如何学习 二、如何整合SpringBoot 三、Kafka的优势 一、什么是Kafka&#xff0c;如何学习 Kafka是一种分布式的消息队列系统&#xff0c;它可以用于处理大量实时数据流。学习Kafka需要掌握如何安装、配置和运行Kafka集群&#xff0c;以及如…

代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和 动态规划

最长公共子序列 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 和上一题一样&#xff0c;dp[i][j]代表&#xff1a; 长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]确定递推公式 主要就是两大情况&#xff1a; text1[…

一步一步学OAK之三:实现RGB相机场景切换

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 遍历所有场景模式和特效模式Setup 5: 创建pipelineSetup 6: 创建节点Setup 7: 连接设备并启动管道Setup 8: 创建与DepthAI设备通信的输入队列和输出队列Setup 9: 定义putText函数Setup 10: 主循环获取视…

uni-app

uni-app 一、准备工作1.新建项目2.配置浏览器3.兼容4.新建页面 二、上手1.pages.json文件的页面配置与全局配置2.rpx尺寸单位3.内置组件4.vue写法 一、准备工作 uni-app文档 HBuilderX&#xff0c;H是HTML的首字母&#xff0c;Builder是构造者&#xff0c;X是HBuilder的下一代版…

实例005 可以拉伸的菜单界面

实例说明 如果管理程序功能菜单非常多&#xff0c;而用户只使用一些常用菜单&#xff0c;这时&#xff0c;可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时&#xff0c;只需单击展开菜单&#xff0c;即可显示相应菜单功能。运行本例&#xf…

使用Python批量进行数据分析

案例01 批量升序排序一个工作簿中的所有工作表——产品销售统计表.xlsx import xlwings as xw import pandas as pd app xw.App(visible False, add_book False) workbook app.books.open(产品销售统计表.xlsx) worksheet workbook.sheets # 列出工作簿中的所有工作表 fo…

VVIC搜款网API接口:获取商品详情数据API

VVIC电商平台汇集了数千家优质品牌和供应商&#xff0c;包括服装、家居用品、电子产品、美妆产品、食品和饮料等各种商品。消费者可以在VVIC上找到各类品牌和产品&#xff0c;满足他们的购物需求。VVIC还提供了多种付款方式和物流配送服务&#xff0c;确保消费者的购物过程顺利…

第27章 uView 内置路由使用注意事项

1 uView 内置路由不支持通过“localhost”域名直接获取数据。 在前后分离开发中“axios” 路由支持使用“localhost”域名或IP地址获取后端的数据&#xff0c;所以不管是IIS部署还是后端调试通过“axios” 路由都能获取数据&#xff0c;对于.NetCore的前后端分离开发来说“axio…

NLP学习笔记(二)

文章目录 &#xff08;一&#xff09;负采样&#xff08;二&#xff09;GloVe1.带全局语料库的跳元模型2.GloVe模型3.问题4.跳元模型与GloVe模型的比较 &#xff08;三&#xff09;问题1.参数初始化2.梯度下降3.下游任务4.句法信息5.似然估计6.词向量表示 &#xff08;一&#…

2023 中兴捧月算法挑战赛-自智网络-参赛总结

“中兴捧月”是由中兴通讯面向在校大学生举办的全球性系列赛事活动&#xff0c;致力于培养学生建模编程、创新、方案策划和团队合作能力。今年是在学校的宣传下了解到比赛&#xff0c;最初抱着学习的态度报名了比赛&#xff0c;最终进入了决赛&#xff0c;完成了封闭的开发与赛…

Jenkins+Gitlab+Springboot项目部署Jar和image两种方式

Springboot环境准备 利用spring官网快速创建springboot项目。 添加一个controller package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class…

【结构型设计模式】桥接模式

一、写在前面 桥接模式&#xff08;Bridge&#xff09;&#xff1a;桥接模式是一种结构型设计模式&#xff0c;其目的是将抽象部分和实现部分分离&#xff0c;允许它们可以独立地变化。该模式通过创建一个桥接类&#xff0c;连接抽象和实现&#xff0c;使得它们可以独立地进行…

网络安全(黑客)自学笔记

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

C语言:数据的存储

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体 目录 往期文章前言1. 数据的类型2. 整型在内存中的存储2.1 原码、反码、…

Qt/C++编写onvif工具(搜索/云台/预置位/OSD/录像存储)

一、前言 从最初编写这个工具开始的时间算起来&#xff0c;至少5年多&#xff0c;一直持续完善到今天&#xff0c;这个工具看起来小也不小大也不大&#xff0c;但是也是经历过无数个现场的洗礼&#xff0c;毫不夸张的说&#xff0c;市面上能够遇到的主流的厂商的设备&#xff…

网络基础一

网络发展 独立模式&#xff1a;计算机之间相互独立。 网络互联&#xff1a;多台计算机连接在一起&#xff0c;完成数据共享。 局域网LAN&#xff1a;计算机数量更多了&#xff0c;通过交换机和路由器连接在一起&#xff1b; 广域网WAN&#xff1a;将远隔千里的计算机都连在…

2023年6月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

6月&#xff0c;合规与监管成为本月加密领域的主旋律&#xff0c;在海外&#xff0c;SEC接连起诉币安与Coinbase两大交易平台&#xff0c;并将除BTC、ETH、USD系等的几乎所有加密货币列为证券&#xff0c;引发市场哗然&#xff0c;行情也与之紧密关联&#xff0c;随着做市商缓慢…