如何修改Matlab boxchart函数的四分位距(IQR)默认参数
boxchart自定义四分位距(IQR)实现方法
boxchart本身没有暴露直接修改分位计算规则的参数,你可以通过手动计算自定义分位、手动覆盖图形对象属性的方式实现需求,操作步骤如下:
- 提前按你的业务规则计算所需的自定义分位值、须端点、离群点集合,分位计算直接调用
quantile函数即可,和boxchart原生计算逻辑完全对齐 - 绘制boxchart后获取图形对象,关闭自动更新属性,再逐一替换对应属性值
完整代码示例
% 1. 准备数据与自定义参数 rng default % 固定随机种子方便复现,实际使用可删除 sample_data = randn(1000, 1); % 替换为你的实际数据 custom_lower_quantile = 0.2; % 自定义下四分位,示例设为20%分位,可按需修改 custom_upper_quantile = 0.8; % 自定义上四分位,示例设为80%分位,可按需修改 whisker_lower_quantile = 0.05; % 自定义下须端点分位,可按需调整 whisker_upper_quantile = 0.95; % 自定义上须端点分位,可按需调整 % 2. 计算自定义指标 q_lower = quantile(sample_data, custom_lower_quantile); q_upper = quantile(sample_data, custom_upper_quantile); w_lower = quantile(sample_data, whisker_lower_quantile); w_upper = quantile(sample_data, whisker_upper_quantile); custom_outliers = sample_data(sample_data < w_lower | sample_data > w_upper); % 3. 绘图并修改属性 b = boxchart(sample_data); b.AutoUpdate = 'off'; % 必须关闭自动更新,否则修改会被原生逻辑覆盖 b.Box = [q_lower, q_upper]; % 修改箱体上下边界,对应自定义四分位 b.WhiskerEnds = [w_lower, w_upper]; % 修改须的上下端点 b.OutlierData = custom_outliers; % 替换为自定义规则下的离群点 % 若需要修改中位数显示,可添加 b.Median = median(sample_data);
多组箱线图适配方法
如果绘制多组数据的箱线图,boxchart返回的是对象数组,遍历每个对象分别计算对应组的自定义指标、修改属性即可。
内容的提问来源于stack exchange,提问作者Bhaskar
相关产品推荐
相关产品推荐

