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

MATLAB中boxchart的X轴标签修改问题求助

MATLAB boxchart X轴标签修改问题解决

你遇到的问题是调用两次boxchart后,无法正确设置X轴自定义标签——要么完全不生效,要么只修改第一个标签。根源在于两次boxchart调用生成了4个独立的箱线组(每组包含均值、中位数两列数据),X轴默认有4个刻度,但你只传入了2个标签,导致匹配异常。

修改方案

直接针对当前代码调整,要么给足对应4个刻度的标签,要么手动调整X轴刻度位置合并分组标签:

方案1:设置对应4个箱线图的完整标签

替换左侧子图的xticklabels行,改为:

xticklabels({'均值(无金属)', '中位数(无金属)', '均值(60mm钢)', '中位数(60mm钢)'})

方案2:合并分组标签(将同一类别下的均值、中位数归为一个标签)

在调用boxchart后添加轴对象控制代码,手动指定刻度位置和标签:

boxchart(box_nometal(:,1:2));
boxchart(box_steel_60mm(:,1:2));
hold off; % 先关闭hold,避免后续轴设置冲突
ax = gca;
ax.XTick = [1.5, 3.5]; % 将刻度放在每组两个箱线图的中间位置
ax.XTickLabels = {'无金属', '60mm钢'};
ax.XTickMode = 'manual'; % 锁定刻度设置,防止MATLAB自动重置

更规范的写法(按类别分组绘制)

如果想从根源避免问题,可以调整数据结构,按类别分组绘制均值和中位数的箱线图,让X轴刻度直接对应类别:

nexttile
% 合并数据,按类别分组
data = [box_nometal; box_steel_60mm];
groups = repmat(categorical({'无金属','无金属','60mm钢','60mm钢'}), 100, 1); % 对应均值、中位数两组
boxchart(groups, data(:));
xticklabels({'无金属', '60mm钢'});
legend('均值', '中位数');

原代码问题分析

你调用boxchart(box_nometal(:,1:2))时,输入是100行2列的矩阵,MATLAB会为每一列生成一个箱线图,对应X轴刻度1、2;第二次调用boxchart(box_steel_60mm(:,1:2))时,又生成两个箱线图,对应X轴刻度3、4。此时X轴共有4个刻度,但你只传入2个标签,MATLAB无法正确映射,导致标签设置异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:19:57