MATLAB 中有关figure图表绘制函数设计(论文中常用)

在撰写论文时,使用 MATLAB 导出的图像常常因大小和格式不统一,导致投稿时编辑部频繁退稿,要求修改和调整。这不仅浪费时间,也增加了工作量。为了减少这些麻烦,可以在 MATLAB 中导出图像时提前设置好图表的大小、格式和其他参数,使其符合论文标准,从而降低后期调整的复杂度,提高投稿效率。

一、图片格式要求

一般,对于论文中图片的要求有:

1、线的属性
  • 线条宽度:通常设置为 1.0 到 1.5 之间,以确保在打印或显示时清晰可见。
  • 线条颜色:使用对比度高的颜色,如黑色、蓝色等,避免使用过于鲜艳或难以区分的颜色。推荐使用 MATLAB 默认颜色或自定义 RGB 值。
  • 线条样式:实线用于主要数据,虚线或点线用于辅助信息,确保不同数据集之间易于区分。
2、字体设置
  • 字体类型:中文使用宋体,英文字母和数字使用 Times New Roman 或其他常见学术字体。
  • 字体大小:标题通常为 14 号字,坐标轴标签为 12 号字,刻度标签为 10 号字,确保在论文中清晰易读。(但我学校这边要求全是9号字体,不同期刊要求也有区别)
3、图片尺寸
  • 图表尺寸:图片通常占据单栏或双栏的宽度。单栏宽度一般是6.5-7cm,对应高度是4.5-5cm,双栏宽度一般单栏宽度两倍。
  • 比例:保持图表的宽高比,避免拉伸或压缩导致的失真。
4、颜色使用
  • 颜色选择:使用颜色区分不同的数据系列,避免颜色过多导致混乱。推荐使用 MATLAB 默认颜色或调色板中对比度高的颜色。
5、分辨率
  • 分辨率:导出图像时设置为 300 DPI,确保打印和显示时的清晰度。
6、图例
  • 图例位置:放置在不遮挡数据的位置,通常在图表的右上角或上方。
  • 图例字体:与图表其他部分字体保持一致,确保易读。
7、文件格式
  • 矢量格式:优先使用矢量格式如 PDF、EPS,以确保放大或缩小时图像不失真。
  • 位图格式:如使用 PNG 格式,确保分辨率足够高(300 DPI 及以上)。

二、matlab中具体代码

为避免在每个图表后反复进行设置,可以将自定义函数保存为单独的 .m 文件,从而实现跨文件调用。

1. 保存自定义函数到单独文件

customize_plot 函数保存为一个独立的 .m 文件,例如 customize_plot.m

function customize_plot(figHandle, xLabel, yLabel, titleText, legendLabels, legendLocation)
    % customize_plot - 自定义图表样式以满足论文要求
    %
    % 输入参数:
    %   figHandle       - 图形句柄 (figure handle),指定要自定义的图形
    %   xLabel          - X轴标签 (string),如 '时间 (s)'
    %   yLabel          - Y轴标签 (string),如 '幅值 (m)'
    %   titleText       - 图表标题 (string),如 '实验结果对比'
    %   legendLabels    - 图例标签 (cell array of strings),如 {'数据1', '数据2'},可选,如果未提供或为空,图中将不显示图例。
    %   legendLocation  - 图例位置 (string),如 'northeast'(右上角),'southwest'(左下角)等。如果位置未提供,可设定默认值为 'best' 或其他。可选
    
    % 设置坐标轴字体大小和样式
    set(gca, 'FontSize', 10, 'FontName', 'Times New Roman');

    % 设置标题、坐标轴标签及字体
    title(titleText, 'FontSize', 14, 'FontName', '宋体');
    xlabel(xLabel, 'FontSize', 12, 'FontName', '宋体');
    ylabel(yLabel, 'FontSize', 12, 'FontName', '宋体');

    % 设置坐标轴字体大小和样式
    set(gca, 'FontSize', 10, 'FontName', 'Times New Roman');

    % 设置图形尺寸
    set(figHandle, 'Units', 'centimeters', 'Position', [10, 10, 14, 10]); % 宽 14cm,高 10cm

    % 设置线条宽度(对于已绘制的线条)
    lines = findall(gca, 'Type', 'Line');
    set(lines, 'LineWidth', 1.5);

    % 设置网格线
    grid on;

    % 设置背景为白色
    set(figHandle, 'Color', 'white');

    % 如果提供了图例标签,则添加图例
    if exist('legendLabels', 'var') && ~isempty(legendLabels)
        legend(legendLabels, 'FontSize', 10, 'FontName', 'Times New Roman', ...
               'Location', legendLocation, 'Box', 'off'); %设置图例边框为透明(Box, 'off')。
    end
end

这里注意:     set(gca, 'FontSize', 10, 'FontName', 'Times New Roman');这个要放在前面,先设置坐标轴字体,再设置标题、坐标轴标签,否则标题、坐标轴标签会被覆盖全都变成Times New Roman,导致无法显示文字

2. 在主文件中调用

在主脚本文件中,直接调用 customize_plot 函数。

主文件示例:

% 主文件路径与 customize_plot.m 文件同目录下
% 示例:绘制带有图例的图形
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);
figure;
plot(x, y1, 'r-', x, y2, 'b--'); % 两条曲线
customize_plot(gcf, '时间 (s)', '幅值', '正弦与余弦函数', {'sin(x)', 'cos(x)'}, 'northeast');

%绘制不带图例的图形
%plot(x, y1, 'r-', x, y2, 'b--'); % 两条曲线
%customize_plot(gcf, '时间 (s)', '幅值', '正弦与余弦函数');

效果如下:

3. 跨路径调用

如果 customize_plot.m 文件不在当前工作目录中,则需要添加其所在目录到 MATLAB 搜索路径,在 MATLAB 命令行输入

addpath('路径到customize_plot文件夹');

例如:(注意要加单引号)

addpath('D:\appd\PreScan_8.5.0\Documents\Experiments\Experiment_OSM');
%addpath('D:/appd/PreScan_8.5.0/Documents/Experiments/Experiment_OSM');
%addpath('D:\\appd\\PreScan_8.5.0\\Documents\\Experiments\\Experiment_OSM');

添加路径后,就可以像调用本地函数一样使用 customize_plot。否则会是下图效果

4. 将路径永久保存

如果需要经常使用,可以将 customize_plot.m 的路径永久保存到 MATLAB 的路径设置中:

  1. 在 MATLAB 命令行输入 pathtool。或点击“设置路径”
  2. 添加 customize_plot.m 的路径并保存。

这样,即使重新启动 MATLAB,也能跨文件调用自定义函数。

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

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

相关文章

YOLO系列论文综述(从YOLOv1到YOLOv11)【第13篇:YOLOv10——实时端到端物体检测】

YOLOv10 1 摘要2 网络结构3 YOLOv1-v10对比 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】【第3篇:YOLOv1——YOLO的开山之作】【第4篇&#xff1a…

Python基于滑动窗口CNN损伤梁桥数据、故宫城墙图像数据分类可视化|数据分享

全文链接:https://tecdat.cn/?p38442 分析师:Yufei Guo 在现代土木结构工程领域,结构损伤的准确识别与定位对于保障基础设施的安全性和耐久性具有极为关键的意义。传统的人工检查方法,如目视检查以及借助专业设备进行检测&#x…

基于Pytorch的CIFAR100数据集上从ResNet50到VGG16的知识蒸馏实验记录

知识蒸馏的概念 可以参照NeurIPS2015的论文“Distilling the Knowledge in a Neural Network”了解知识蒸馏的概念。 知识蒸馏的狭义概念就是从复杂模型中迁移知识来提升简单模型的性能。复杂模型称之为教师模型,简单模型称之为学生模型。最近,笔者重温…

jQuery九宫格抽奖,php处理抽奖信息

功能介绍 jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项,用户点击抽奖按钮后,九宫格开始旋转,最终停在一个随机位置上,此位置对应的抽奖项为用户的中奖结果。 本文实现九宫格的步骤为&#xf…

鸿蒙修饰符

文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…

输入json 达到预览效果

下载 npm i vue-json-pretty2.4.0 <template><div class"newBranchesDialog"><t-base-dialogv-if"addDialogShow"title"Json数据配置"closeDialog"closeDialog":dialogVisible"addDialogShow":center"…

MDETR - Modulated Detection for End-to-End Multi-Modal Understanding

Abstract 多模态推理系统&#xff08;如视觉问答系统或图像与文本之间的匹配系统&#xff09;通常依赖于一个预训练的物体检测器&#xff0c;用于从图像中提取感兴趣的区域。这些物体检测器通常是作为“黑盒”使用的&#xff0c;也就是说&#xff0c;它们在被训练时独立于下游…

pytest+allure生成报告显示loading和404

pytestallure执行测试脚本后&#xff0c;通常会在电脑的磁盘上建立一个临时文件夹&#xff0c;里面存放allure测试报告&#xff0c;但是这个测试报告index.html文件单独去打开&#xff0c;却显示loading和404, 这个时候就要用一些办法来解决这个报告显示的问题了。 用命令产生…

【MyBatis】验证多级缓存及 Cache Aside 模式的应用

文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口&#xff0c; 采用 Redis 会引入什么问题&#xff1f;万一遇到需强一致场景&#x…

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…

统一功能(2异常)

RequestMapping("/r1")public String returnString(){return "asdfghjkl";} 如果在RequestMapping中返回的类型是String但是统一返回结果是Result类就会报错。 原因&#xff1a;源码中需要Result类型但是传入的是String类型 统一异常处理&#xff1a; 比如…

浅谈js中onmouseleave和onmouseout的区别

同步发布于我的网站 &#x1f680; 背景介绍基本概念区别详解 无子元素的情况有子元素的情况 实际应用场景 使用 onmouseleave使用 onmouseout 注意事项总结 背景介绍 在前端开发中&#xff0c;我们经常需要为元素绑定鼠标事件&#xff0c;以实现各种交互效果。onmouseleave…

python+django自动化部署日志采用‌WebSocket前端实时展示

一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…

【小白学机器学习37】用numpy计算协方差cov(x,y) 和 皮尔逊相关系数 r(x,y)

目录 1 关于1个数组np.array&#xff08;1组数据&#xff09;如何求各种统计数据 2 关于2个数组np.array&#xff08;2组数据&#xff09;如何求数组的相关关系&#xff1f; 2.1 协方差公式和方差公式 2.2 协方差 公式 的相关说明 2.3 用np.cov(x,y,ddof0) 直接求协方差矩…

(超详细图文)PLSQL Developer 配置连接远程 Oracle 服务

1、下载配置文件 &#xff08;超详细图文详情&#xff09;Navicat 配置连接 Oracle-CSDN博客 将下载的文件解压到单独文件夹&#xff0c;如&#xff1a;D:\App\App_Java\Oracle\instantclient-basic-windows.x64-19.25.0.0.0dbru 2、配置 打开 PLSQL Developer&#xff0c;登…

学习视频超分辨率扩散模型中的空间适应和时间相干性(原文翻译)

文章目录 摘要1. Introduction2. Related Work3. Our Approach3.1. Video Upscaler3.2. Spatial Feature Adaptation Module3.3. Temporal Feature Alignment Module3.4. Video Refiner3.5. Training Strategy 4. Experiments4.1. Experimental Settings4.2. Comparisons with …

设计模式---建造者模式

建造者模式 一种创建型设计模式&#xff0c;它允许你一步一步地构建复杂对象。通过使用建造者模式&#xff0c;你可以将对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。说白点就是&#xff0c;解决了构造函数创建对象的问题。 适用于那种构造函…

AtomicIntegerFieldUpdater能否降低内存

1. 代码如下&#xff1a; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest {final AtomicInteger startPosition new AtomicInteger(0);final AtomicInteger wrotePosition new Atom…

element的el-table表格标题用css自定义是否必填,用添加伪类的方式标红色*

element的el-table表格标题用css自定义是否必填添加伪类红色 * 效果图如下&#x1f447; el-table组件的html部分 css部分 /deep/.el-table__header-wrapper{.el-table__header{.has-gutter tr .el-table__cell:nth-of-type(3) .cell:before{content: *;color:red}.has-gutte…

数据库的⽤户和权限管理

数据库的⽤户和权限管理 应⽤场景⽤户查看⽤户创建⽤户语法注意事项示例 修改密码语法示例 删除⽤户语法 权限与授权给⽤户授权语法⽰例 回收权限语法⽰例 应⽤场景 数据库服务安装成功后默认有⼀个root⽤户&#xff0c;可以新建和操纵数据库服务中管理的所有数据库。在真实的…