MATLAB中如何为相关矩阵图的X/Y轴段添加色条标注
在MATLAB中给相关矩阵图添加X/Y轴侧边色条标注
我明白你想要的效果——在相关矩阵图的X、Y轴旁各加一段对应维度的色条标注对吧?其实可以通过创建独立的小坐标轴来实现,我给你整理了可直接复用的代码和关键说明:
完整实现代码
% 替换成你的真实数据 data = corrcoef(randn(20,20)); % 示例相关矩阵 row_segment_data = rand(20,1); % Y轴旁色条对应的行数据/类别 col_segment_data = rand(1,20); % X轴旁色条对应的列数据/类别 % 1. 初始化图形并设置主图位置(留出侧边空间) figure('Position', [100, 100, 800, 700]); main_ax = axes('Position', [0.15, 0.15, 0.7, 0.7]); % [左, 下, 宽, 高] % 绘制主相关矩阵图 imagesc(data, 'Parent', main_ax); title('Correlation plot', 'FontSize', 14); colormap(main_ax, 'jet'); colorbar(main_ax); set(main_ax, 'XTick', 1:size(data,2), 'YTick', 1:size(data,1)); % 保留刻度 % 2. 添加Y轴左侧的分段色条 y_side_ax = axes('Position', [0.08, 0.15, 0.05, 0.7]); imagesc(row_segment_data, 'Parent', y_side_ax); % 优化显示:隐藏X刻度,Y轴对齐主图行 set(y_side_ax, 'XTick', [], 'YTick', 1:size(data,1), 'YTickLabel', []); colormap(y_side_ax, 'viridis'); % 可自定义配色,和主图区分或一致 ylabel(y_side_ax, 'Row Segments', 'Rotation', 90, 'FontSize', 10); % 3. 添加X轴下方的分段色条 x_side_ax = axes('Position', [0.15, 0.08, 0.7, 0.05]); imagesc(col_segment_data, 'Parent', x_side_ax); % 优化显示:隐藏Y刻度,X轴对齐主图列 set(x_side_ax, 'YTick', [], 'XTick', 1:size(data,2), 'XTickLabel', []); colormap(x_side_ax, 'viridis'); xlabel(x_side_ax, 'Column Segments', 'FontSize', 10); % 同步主图与Y侧边色条的Y轴范围,确保完美对齐 linkaxes([main_ax, y_side_ax], 'y');
关键说明
- 坐标轴位置控制:通过
axes('Position', ...)手动分配主图和侧边色条的空间,你可以根据需求调整数值(比如加宽侧边色条、调整间距) - 侧边色条本质:其实是独立的小型
imagesc图,你可以把row_segment_data/col_segment_data换成你的分段类别数据(比如固定的分组索引,如[1;1;2;2;3;3...]),就能得到分段色块效果 - 配色自定义:侧边色条可以用和主图相同的
colormap(比如改成jet),也可以用不同配色区分维度 - 刻度对齐:用
linkaxes确保主图和Y侧边色条的行刻度完全对齐,避免错位
内容的提问来源于stack exchange,提问作者Dinal
相关产品推荐
相关产品推荐

