文章目录
概要
本文分享MATLAB科研绘图:带置信区间填充的折线‑散点组合图 。
同时绘制原始散点、拟合曲线、置信区间半透明填充区域,适配期刊论文格式。
整体架构流程
- 数据准备:读取
data.mat数据集,包含x、y1、y2原始散点;y11、y22拟合曲线;置信边界坐标。 - 颜色定义:归一化RGB配色,两组绘图颜色。
- 画布尺寸设定:厘米单位,16×9学术图片比例。
- 绘图:
fill绘制置信区间填充,line绘制拟合线,scatter绘制原始散点。 - 图表美化:坐标轴、网格、图例、字体,手动补全右上边框(
box off经典补框技巧)。 - 输出300DPI高清图片。
技术名词解释
- fill:面填充函数,用于绘制置信区间阴影区域
- scatter:散点绘制,
filled代表实心标记点 - line:绘制拟合曲线
- Position:画布、坐标轴位置属性,厘米单位适配论文出图
- PaperPosition:print导出图片控制纸张尺寸,保证导出图和显示尺寸一致
技术细节
- 置信区间:
fill([x上边界,x倒序下边界],[y上边界,y倒序下边界],颜色)构造闭合填充区域。 - 补右上边框:原生
Box off会丢失上、右框线,新建透明axes绘制两条边框,MATLAB科研绘图高频技巧。 - 字体统一Arial,适配SCI期刊;Y轴开启网格,X轴关闭网格。
- 输出分辨率
-r300,满足期刊图片分辨率要求。 - 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');