如何在MATLAB中为索引列(又称分组列)绘制变异图
在MATLAB中生成变异索引列图
这类图表的核心是按分组索引展示数据的变异范围(如极值),同时标记关键统计量(如中位数、均值),以下是实现代码:
步骤1:构造示例数据
% 定义分组类别 categories = {'Group A', 'Group B', 'Group C', 'Group D'}; % 生成各组样本数据 groupData = [ randn(20,1)+1; % Group A randn(25,1)+3; % Group B randn(18,1)-1; % Group C randn(22,1)+0.5; % Group D ]; % 标记每个数据点所属分组 groupIdx = [ones(20,1); 2*ones(25,1); 3*ones(18,1); 4*ones(22,1)];
步骤2:计算分组统计量
stats = struct(); for i = 1:length(categories) idx = groupIdx == i; stats(i).min = min(groupData(idx)); % 最小值 stats(i).max = max(groupData(idx)); % 最大值 stats(i).median = median(groupData(idx)); % 中位数 end
步骤3:绘制变异图
figure('Position', [100 100 600 400]); hold on; box on; % 绘制每组的范围竖线 for i = 1:length(categories) % 极值范围竖线 plot([i i], [stats(i).min, stats(i).max], 'k-', 'LineWidth', 1.5); % 中位数标记 plot(i, stats(i).median, 'rs', 'MarkerFaceColor', 'r', 'MarkerSize', 8); % 叠加原始数据点(可选,添加透明度避免重叠) idx = groupIdx == i; plot(i*ones(sum(idx),1), groupData(idx), 'bo', 'MarkerSize', 4, 'MarkerFaceColor', 'b', 'Alpha', 0.6); end % 设置坐标轴与标签 set(gca, 'XTick', 1:length(categories), 'XTickLabel', categories); xlabel('分组索引'); ylabel('数值'); title('变异索引列图'); hold off;
自定义调整选项
- 若需展示均值而非中位数,将
median替换为mean - 修改标记样式:调整
plot函数的Marker参数(如'o'圆形、'^'三角形) - 更改配色:修改
'Color'或'MarkerFaceColor'参数 - 如需展示四分位距,可计算上下四分位数,搭配
errorbar函数补充绘制
内容的提问来源于stack exchange,提问作者D Den
相关产品推荐
相关产品推荐

