Matlab中如何在非均匀横坐标位置绘制箱线图?
解决Matlab非均匀横坐标箱线图的问题
没问题,这需求其实用Matlab的boxplot函数自带的参数就能轻松搞定!默认的箱线图确实会把每个分组放在均匀的1、2、3...位置上,但我们可以直接通过指定Positions参数来设置非均匀的横坐标位置,具体实现如下:
完整示例代码
rng('default') % 保证结果可复现 x1 = rand(5,1); x2 = rand(10,1); x3 = rand(15,1); x = [x1; x2; x3]; g1 = repmat({'First'},5,1); g2 = repmat({'Second'},10,1); g3 = repmat({'Third'},15,1); g = [g1; g2; g3]; % 定义你需要的非均匀横坐标位置 target_positions = [1.1, 2.5, 4.6]; % 绘制箱线图时指定位置参数 boxplot(x, g, 'Positions', target_positions); % 同步设置x轴刻度和分组标签,保证显示对应 xticks(target_positions); xticklabels({'First', 'Second', 'Third'}); % 可选:调整x轴范围,让箱线图显示更美观(避免贴到边缘) xlim([min(target_positions)-0.5, max(target_positions)+0.5]);
关键说明
'Positions'参数是核心:它接受一个数组,数组里的每个值对应一个分组箱线图的中心横坐标位置,数组长度要和你的分组数量一致。- 同步设置
xticks和xticklabels是为了让x轴的刻度和分组名称准确对应到你设置的非均匀位置上,避免混淆。 - 如果后续要增加更多分组,只需要扩展
target_positions数组,同时对应更新分组数据即可,逻辑完全通用。
内容的提问来源于stack exchange,提问作者pkj
相关产品推荐
相关产品推荐

