You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab技术问题:如何在单个X轴标签下绘制两列Excel数据的箱线图

在Matlab中实现单X轴下两列数据的箱线图对比

需求说明

将Excel表格(.xls)中的两列数据“Data1”和“Data2”,在单个X轴标签“Jan”下绘制箱线图,实现两组数据的可视化对比。现有一段多子图箱线图代码,需调整为单轴双箱线图效果。

解决方案

步骤1:读取Excel数据

使用readtable读取目标Excel文件,直接提取需要的列数据:

% 替换为你的Excel文件路径
surveyData = readtable('你的数据文件.xls');
% 提取两组目标数据
data1 = surveyData.Data1;
data2 = surveyData.Data2;

步骤2:构造单X轴分组结构

为让两组数据对应同一个X轴标签“Jan”,构造全为“Jan”的分类变量,并合并两组数据:

% 生成与数据长度一致的分类X轴标签
xAxis = categorical(repmat("Jan", length(data1), 1));
% 合并两组数据为矩阵(需确保两组数据行数相同)
combinedData = [data1, data2];

步骤3:绘制单轴双箱线图

调用boxchart绘制,并沿用你现有代码的Y轴刻度自定义逻辑:

figure;
% 在同一个X标签下绘制两组数据的箱线图
ax = boxchart(xAxis, combinedData);

% 设置X轴标签
xlabel('Jan');

% 自定义Y轴刻度(与原代码逻辑对齐)
ScoreS = [-3, -2, -1, 0, 1, 2, 3];
yt = get(gca, 'YTick');   
ytx = linspace(min(yt), max(yt), numel(ScoreS));
ytl = sprintfc('%.0f',ScoreS);   
set(gca, 'YTick', ytx, 'YTickLabel', ytl);
ylabel('评分');

% 添加图例,标注样本量
legend(['Data1 (N=', num2str(length(data1)), ')'], ['Data2 (N=', num2str(length(data2)), ')']);

% 优化布局
grid on;
tightlayout;

关键说明

  • boxchart支持在同一分类下绘制多组数据的箱线图,只需传入多列数据矩阵即可。
  • 分类变量xAxis确保所有数据点都映射到“Jan”这个X轴标签,实现单X轴对比效果。
  • Y轴刻度部分完全复用你原代码的逻辑,保证样式一致性。

内容的提问来源于stack exchange,提问作者zeeslime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:05:33