MATLAB绘制带置信区间的折线散点图(科研绘图模板)

文章目录

概要

本文分享MATLAB科研绘图:带置信区间填充的折线‑散点组合图

同时绘制原始散点、拟合曲线、置信区间半透明填充区域,适配期刊论文格式。

整体架构流程

  1. 数据准备:读取data.mat数据集,包含x、y1、y2原始散点;y11、y22拟合曲线;置信边界坐标。
  2. 颜色定义:归一化RGB配色,两组绘图颜色。
  3. 画布尺寸设定:厘米单位,16×9学术图片比例。
  4. 绘图:fill绘制置信区间填充,line绘制拟合线,scatter绘制原始散点。
  5. 图表美化:坐标轴、网格、图例、字体,手动补全右上边框(box off经典补框技巧)。
  6. 输出300DPI高清图片。

技术名词解释

  • fill:面填充函数,用于绘制置信区间阴影区域
  • scatter:散点绘制,filled代表实心标记点
  • line:绘制拟合曲线
  • Position:画布、坐标轴位置属性,厘米单位适配论文出图
  • PaperPosition:print导出图片控制纸张尺寸,保证导出图和显示尺寸一致

技术细节

  1. 置信区间:fill([x上边界,x倒序下边界],[y上边界,y倒序下边界],颜色)构造闭合填充区域。
  2. 补右上边框:原生Box off会丢失上、右框线,新建透明axes绘制两条边框,MATLAB科研绘图高频技巧。
  3. 字体统一Arial,适配SCI期刊;Y轴开启网格,X轴关闭网格。
  4. 输出分辨率-r300,满足期刊图片分辨率要求。
  5. RGB颜色直接硬编码,不再依赖第三方TheColor工具包。

完整MATLAB代码

matlab 复制代码
clear,clc,close all
%% 数据准备
% 读取data.mat,内部需要变量:
% x,y1,y2 原始散点;y11,y22拟合曲线
% xconfu1,xconfd1,yconfu1,yconfd1 第一组置信区间坐标
% xconfu2,xconfd2,yconfu2,yconfd2 第二组置信区间坐标
load data.mat

%% 颜色定义(原TheColor提取,无需第三方函数)
C1 = [0.2627, 0.4196, 0.6784];
C2 = [0.9882, 0.7529, 0.0235];

%% 图片尺寸设置(单位:厘米)
figureUnits = 'centimeters';
figureWidth = 16;
figureHeight = 9;

%% 窗口设置
figureHandle = figure;
set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]);
hold on

%% 带置信区间的折线散点图绘制
% 置信区间填充
P1 = fill([xconfu1,xconfd1],[yconfu1,yconfd1],C1);
P2 = fill([xconfu2,xconfd2],[yconfu2,yconfd2],C2);
% 拟合曲线
L1 = line(x,y11);
L2 = line(x,y22);
% 原始实心散点
S1 = scatter(x,y1,40,'filled');
S2 = scatter(x,y2,40,'filled');

% 标题、坐标轴标签
hTitle = title('Line‑Scatter Chart with Confidence Interval');
hXLabel = xlabel('GlobBiomass AGB');
hYLabel = ylabel('AGB');

%% 细节优化
% 置信填充区域样式:半透明灰色填充,关闭边缘线条
set(P1,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2,'EdgeColor','none')
set(P2,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2,'EdgeColor','none')
% 拟合曲线属性
set(L1,'LineStyle','-','LineWidth',3, 'Color',C1)
set(L2,'LineStyle','-','LineWidth',3, 'Color',C2)
% 散点属性
set(S1,'MarkerFaceColor',C1,'MarkerEdgeColor','none')
set(S2,'MarkerFaceColor',C2,'MarkerEdgeColor','none')

% 坐标区调整
set(gca, 'Box', 'off', ...                                % 关闭原生边框
'Layer','top',...                                % 刻度置于顶层
'LineWidth',1,...                                % 坐标轴线宽
'XGrid', 'off', 'YGrid', 'on', ...               % Y轴网格开启
'TickDir', 'out', 'TickLength', [0.01 0.01], ... % 刻度向外
'XMinorTick', 'off', 'YMinorTick', 'off', ...    % 关闭小刻度
'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1])     % 坐标轴颜色

% 坐标轴范围
set(gca, 'XLim',[-0.01 1.01],...
'YLim',[-65 30])

% 图例设置
hLegend = legend([S1,S2,L1,L2], ...
'Data1','Data2','Fit1','Fit2', ...
'Location', 'southeast',...
'NumColumns',2);

% 字体字号(期刊常用Arial字体)
set(gca, 'FontName', 'Arial', 'FontSize', 10)
set([hLegend,hXLabel,hYLabel], 'FontSize', 11, 'FontName', 'Arial')
set(hTitle, 'FontSize', 12, 'FontWeight' , 'bold')

% 画布背景白色
set(gcf,'Color',[1 1 1])

%% 技巧:手动添加上、右框线(box=off时补全边框)
xc = get(gca,'XColor');
yc = get(gca,'YColor');
unit = get(gca,'units');
ax = axes( 'Units', unit,...
'Position',get(gca,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor',xc,...
'YColor',yc);
set(ax, 'linewidth',1,...
'XTick', [],...
'YTick', []);

%% 图片输出,300DPI高清png
figW = figureWidth;
figH = figureHeight;
set(figureHandle,'PaperUnits',figureUnits);
set(figureHandle,'PaperPosition',[0 0 figW figH]);
fileout = '带置信区间的折线散点图';
print(figureHandle,[fileout,'.png'],'-r300','-dpng');
相关推荐
简简单单做算法2 小时前
基于遗传算法和贝叶斯联合优化的BiLSTM(GA-BO-BiLSTM)一维时间序列预测算法matlab仿真
matlab·一维时间序列预测·ga-bo-bilstm·遗传和贝叶斯联合优化
tianyu2342 小时前
Java 正则表达式终极指南:从 Pattern 到 Matcher,从双重转义到性能优化,一篇全搞定
java·开发语言·正则表达式·group·find·pattern·matcher
caimouse4 小时前
ReactOS 窗口系统分析(23):键盘 — keyboard.c + kbdlayout.c
c语言·开发语言·计算机外设
Emily156853598704 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧9 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡9 小时前
AI 应用系统设计
java·开发语言·人工智能
今天AI了吗11 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL52111 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing12 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法