概要
本文介绍了如何使用 MATLAB 绘制灵活的方块热图(square heatmap),并对图形进行细节优化,包括自定义颜色映射、图形大小调整、坐标轴和字体美化,提升热图的视觉效果与易读性。示例基于三维矩阵数据,通过 squareheatmappro 函数实现高分辨率的矩阵数据可视化。
整体架构流程
-
数据准备
-
载入数据文件
data.mat,获得数据矩阵Z。
-
-
颜色映射定义
-
调用
TheColor('sci',2064)获取科学配色库,确保颜色渐变清晰且科学美观。
-
-
图形窗口尺寸设置
-
设置绘图窗口单位为厘米,确定宽度为15cm,高度为12cm。
-
-
热图绘制
-
使用自定义函数
squareheatmappro,传入数据矩阵及显示参数(80和1000)绘制方块热图。 -
添加标题和坐标轴标签。
-
-
图形细节优化
-
应用配色方案并添加颜色条。
-
设置坐标轴属性,关闭边框和网格,调整刻度样式和颜色。
-
统一字体为 Arial,调整字体大小。
-
设置背景颜色为白色,方便展示和打印。
-
技术名词解释
-
squareheatmappro:自定义函数,实现高分辨率方块热图绘制,支持灵活调整色块大小与显示参数。
-
colormap:颜色映射表,用于将数据值映射为颜色梯度。
-
colorbar:显示颜色条,说明颜色对应的数据范围。
-
axis equal tight:调整坐标轴,使单位长度相等且图像紧凑。
-
TheColor:自定义配色函数,返回预定义的颜色映射方案。
-
set函数:用于调整图形和坐标轴的各种属性,如字体、刻度、颜色等。
技术细节
-
载入的
data.mat文件包含数据矩阵Z,用于生成二维方块热图。 -
通过
TheColor('sci',2064)选择科学配色方案,适合数据的连续性和渐变需求。 -
设置图形窗口单位为厘米,方便在不同设备和打印环境中保持尺寸一致。
-
通过
squareheatmappro(Z,80,1000)函数绘制热图,参数可能对应像素或缩放比例,支持大规模数据可视化。 -
调用
colormap(map)和colorbar添加颜色映射和对应的数值条。 -
关闭坐标轴边框和网格,减少视觉干扰。
-
调整刻度方向为外侧,刻度长度设为零,令坐标轴更简洁。
-
字体统一使用 Arial,提升专业感和兼容性。
-
设置背景为白色,提高图形整体清晰度和对比度。
完整可运行代码
clear;clc
%% 数据准备
% 读取数据
load data.mat
% 数据矩阵
Z = data;
%% 颜色定义
map = [0.619607843137255 0.003921568627451 0.258823529411765
0.627450980392157 0.011764705882353 0.258823529411765
0.631372549019608 0.015686274509804 0.262745098039216
0.639215686274510 0.027450980392157 0.262745098039216
0.647058823529412 0.035294117647059 0.262745098039216
0.654901960784314 0.043137254901961 0.266666666666667
0.662745098039216 0.050980392156863 0.266666666666667
0.678431372549020 0.066666666666667 0.270588235294118
0.686274509803922 0.074509803921569 0.274509803921569
0.690196078431373 0.082352941176471 0.274509803921569
0.698039215686274 0.090196078431373 0.278431372549020
0.705882352941177 0.098039215686275 0.278431372549020
0.709803921568627 0.105882352941176 0.278431372549020
0.717647058823529 0.113725490196078 0.282352941176471
0.733333333333333 0.129411764705882 0.286274509803922
0.737254901960784 0.133333333333333 0.286274509803922
0.745098039215686 0.145098039215686 0.290196078431373
0.756862745098039 0.156862745098039 0.290196078431373
0.764705882352941 0.164705882352941 0.290196078431373
0.768627450980392 0.172549019607843 0.294117647058824
0.776470588235294 0.180392156862745 0.294117647058824
0.788235294117647 0.188235294117647 0.298039215686275
0.792156862745098 0.196078431372549 0.298039215686275
0.803921568627451 0.211764705882353 0.301960784313725
0.811764705882353 0.219607843137255 0.301960784313725
0.819607843137255 0.227450980392157 0.305882352941176
0.827450980392157 0.235294117647059 0.305882352941176
0.835294117647059 0.243137254901961 0.305882352941176
0.839215686274510 0.250980392156863 0.305882352941176
0.843137254901961 0.254901960784314 0.301960784313725
0.850980392156863 0.266666666666667 0.301960784313725
0.850980392156863 0.270588235294118 0.301960784313725
0.854901960784314 0.278431372549020 0.298039215686275
0.862745098039216 0.286274509803922 0.294117647058824
0.870588235294118 0.294117647058824 0.294117647058824
0.874509803921569 0.301960784313725 0.294117647058824
0.878431372549020 0.305882352941176 0.290196078431373
0.878431372549020 0.313725490196078 0.290196078431373
0.882352941176471 0.321568627450980 0.290196078431373
0.890196078431372 0.329411764705882 0.286274509803922
0.898039215686275 0.337254901960784 0.282352941176471
0.898039215686275 0.341176470588235 0.282352941176471
0.901960784313726 0.349019607843137 0.278431372549020
0.909803921568627 0.356862745098039 0.278431372549020
0.913725490196078 0.364705882352941 0.278431372549020
0.917647058823529 0.372549019607843 0.274509803921569
0.921568627450980 0.376470588235294 0.274509803921569
0.925490196078431 0.380392156862745 0.270588235294118
0.929411764705882 0.388235294117647 0.270588235294118
0.937254901960784 0.400000000000000 0.266666666666667
0.945098039215686 0.407843137254902 0.262745098039216
0.945098039215686 0.415686274509804 0.262745098039216
0.952941176470588 0.423529411764706 0.262745098039216
0.956862745098039 0.427450980392157 0.262745098039216
0.956862745098039 0.435294117647059 0.266666666666667
0.956862745098039 0.443137254901961 0.270588235294118
0.960784313725490 0.454901960784314 0.274509803921569
0.960784313725490 0.462745098039216 0.278431372549020
0.960784313725490 0.474509803921569 0.282352941176471
0.964705882352941 0.486274509803922 0.290196078431373
0.964705882352941 0.494117647058824 0.294117647058824
0.964705882352941 0.505882352941176 0.298039215686275
0.968627450980392 0.513725490196078 0.301960784313725
0.968627450980392 0.521568627450980 0.305882352941176
0.968627450980392 0.529411764705882 0.305882352941176
0.968627450980392 0.545098039215686 0.313725490196078
0.972549019607843 0.556862745098039 0.321568627450980
0.972549019607843 0.560784313725490 0.321568627450980
0.976470588235294 0.572549019607843 0.329411764705882
0.976470588235294 0.580392156862745 0.333333333333333
0.980392156862745 0.592156862745098 0.337254901960784
0.980392156862745 0.600000000000000 0.341176470588235
0.980392156862745 0.607843137254902 0.345098039215686
0.980392156862745 0.615686274509804 0.349019607843137
0.984313725490196 0.623529411764706 0.352941176470588
0.984313725490196 0.643137254901961 0.360784313725490
0.988235294117647 0.650980392156863 0.364705882352941
0.988235294117647 0.662745098039216 0.372549019607843
0.988235294117647 0.670588235294118 0.372549019607843
0.988235294117647 0.674509803921569 0.376470588235294
0.992156862745098 0.682352941176471 0.380392156862745
0.992156862745098 0.690196078431373 0.388235294117647
0.992156862745098 0.698039215686274 0.396078431372549
0.992156862745098 0.705882352941177 0.400000000000000
0.992156862745098 0.713725490196078 0.407843137254902
0.992156862745098 0.725490196078431 0.415686274509804
0.992156862745098 0.729411764705882 0.419607843137255
0.992156862745098 0.737254901960784 0.427450980392157
0.992156862745098 0.745098039215686 0.431372549019608
0.992156862745098 0.749019607843137 0.435294117647059
0.992156862745098 0.756862745098039 0.443137254901961
0.992156862745098 0.768627450980392 0.450980392156863
0.992156862745098 0.776470588235294 0.458823529411765
0.992156862745098 0.780392156862745 0.462745098039216
0.992156862745098 0.792156862745098 0.470588235294118
0.992156862745098 0.800000000000000 0.478431372549020
0.992156862745098 0.803921568627451 0.482352941176471
0.992156862745098 0.811764705882353 0.490196078431373
0.992156862745098 0.819607843137255 0.494117647058824
0.992156862745098 0.823529411764706 0.498039215686275
0.992156862745098 0.831372549019608 0.505882352941176
0.992156862745098 0.847058823529412 0.517647058823529
0.992156862745098 0.854901960784314 0.525490196078431
0.992156862745098 0.858823529411765 0.529411764705882
0.992156862745098 0.866666666666667 0.533333333333333
0.992156862745098 0.874509803921569 0.541176470588235
0.996078431372549 0.878431372549020 0.545098039215686
0.996078431372549 0.882352941176471 0.552941176470588
0.996078431372549 0.890196078431372 0.564705882352941
0.996078431372549 0.890196078431372 0.568627450980392
0.996078431372549 0.898039215686275 0.576470588235294
0.996078431372549 0.901960784313726 0.588235294117647
0.996078431372549 0.905882352941176 0.596078431372549
0.996078431372549 0.909803921568627 0.600000000000000
0.996078431372549 0.913725490196078 0.611764705882353
0.996078431372549 0.917647058823529 0.615686274509804
0.996078431372549 0.921568627450980 0.619607843137255
0.996078431372549 0.929411764705882 0.631372549019608
0.996078431372549 0.933333333333333 0.639215686274510
0.996078431372549 0.941176470588235 0.647058823529412
0.996078431372549 0.945098039215686 0.654901960784314
0.996078431372549 0.949019607843137 0.662745098039216
0.996078431372549 0.952941176470588 0.670588235294118
0.996078431372549 0.956862745098039 0.674509803921569
0.996078431372549 0.960784313725490 0.686274509803922
0.996078431372549 0.964705882352941 0.690196078431373
0.996078431372549 0.968627450980392 0.698039215686274
0.996078431372549 0.976470588235294 0.709803921568627
0.996078431372549 0.980392156862745 0.717647058823529
0.996078431372549 0.984313725490196 0.725490196078431
0.996078431372549 0.988235294117647 0.729411764705882
0.996078431372549 0.992156862745098 0.737254901960784
0.996078431372549 0.996078431372549 0.741176470588235
0.996078431372549 0.996078431372549 0.741176470588235
0.988235294117647 0.996078431372549 0.733333333333333
0.988235294117647 0.996078431372549 0.733333333333333
0.984313725490196 0.992156862745098 0.725490196078431
0.976470588235294 0.988235294117647 0.717647058823529
0.976470588235294 0.988235294117647 0.713725490196078
0.972549019607843 0.988235294117647 0.705882352941177
0.968627450980392 0.988235294117647 0.701960784313725
0.964705882352941 0.984313725490196 0.698039215686274
0.960784313725490 0.984313725490196 0.690196078431373
0.956862745098039 0.980392156862745 0.682352941176471
0.949019607843137 0.980392156862745 0.674509803921569
0.949019607843137 0.980392156862745 0.670588235294118
0.945098039215686 0.976470588235294 0.666666666666667
0.941176470588235 0.976470588235294 0.658823529411765
0.937254901960784 0.972549019607843 0.654901960784314
0.929411764705882 0.972549019607843 0.647058823529412
0.929411764705882 0.972549019607843 0.639215686274510
0.929411764705882 0.972549019607843 0.639215686274510
0.921568627450980 0.968627450980392 0.631372549019608
0.917647058823529 0.964705882352941 0.623529411764706
0.913725490196078 0.964705882352941 0.619607843137255
0.909803921568627 0.964705882352941 0.611764705882353
0.905882352941176 0.960784313725490 0.607843137254902
0.901960784313726 0.960784313725490 0.603921568627451
0.901960784313726 0.960784313725490 0.600000000000000
0.894117647058824 0.956862745098039 0.596078431372549
0.882352941176471 0.952941176470588 0.596078431372549
0.878431372549020 0.952941176470588 0.596078431372549
0.866666666666667 0.945098039215686 0.600000000000000
0.858823529411765 0.941176470588235 0.603921568627451
0.850980392156863 0.937254901960784 0.603921568627451
0.839215686274510 0.933333333333333 0.603921568627451
0.831372549019608 0.929411764705882 0.607843137254902
0.827450980392157 0.929411764705882 0.607843137254902
0.819607843137255 0.925490196078431 0.611764705882353
0.803921568627451 0.917647058823529 0.615686274509804
0.796078431372549 0.913725490196078 0.615686274509804
0.784313725490196 0.909803921568627 0.619607843137255
0.776470588235294 0.909803921568627 0.619607843137255
0.772549019607843 0.905882352941176 0.619607843137255
0.764705882352941 0.901960784313726 0.623529411764706
0.745098039215686 0.898039215686275 0.627450980392157
0.741176470588235 0.898039215686275 0.627450980392157
0.737254901960784 0.894117647058824 0.627450980392157
0.729411764705882 0.890196078431372 0.627450980392157
0.713725490196078 0.886274509803922 0.631372549019608
0.709803921568627 0.882352941176471 0.631372549019608
0.701960784313725 0.878431372549020 0.635294117647059
0.690196078431373 0.874509803921569 0.635294117647059
0.686274509803922 0.870588235294118 0.639215686274510
0.678431372549020 0.866666666666667 0.639215686274510
0.662745098039216 0.862745098039216 0.639215686274510
0.650980392156863 0.858823529411765 0.643137254901961
0.643137254901961 0.858823529411765 0.643137254901961
0.631372549019608 0.850980392156863 0.643137254901961
0.619607843137255 0.847058823529412 0.643137254901961
0.615686274509804 0.843137254901961 0.643137254901961
0.600000000000000 0.839215686274510 0.643137254901961
0.592156862745098 0.835294117647059 0.643137254901961
0.588235294117647 0.835294117647059 0.643137254901961
0.576470588235294 0.831372549019608 0.643137254901961
0.556862745098039 0.819607843137255 0.643137254901961
0.549019607843137 0.815686274509804 0.643137254901961
0.541176470588235 0.811764705882353 0.643137254901961
0.533333333333333 0.811764705882353 0.643137254901961
0.521568627450980 0.807843137254902 0.643137254901961
0.509803921568627 0.803921568627451 0.643137254901961
0.494117647058824 0.796078431372549 0.643137254901961
0.486274509803922 0.792156862745098 0.643137254901961
0.482352941176471 0.792156862745098 0.643137254901961
0.470588235294118 0.788235294117647 0.643137254901961
0.458823529411765 0.784313725490196 0.643137254901961
0.447058823529412 0.780392156862745 0.643137254901961
0.439215686274510 0.776470588235294 0.643137254901961
0.427450980392157 0.772549019607843 0.643137254901961
0.419607843137255 0.768627450980392 0.643137254901961
0.403921568627451 0.764705882352941 0.647058823529412
0.392156862745098 0.752941176470588 0.647058823529412
0.388235294117647 0.749019607843137 0.647058823529412
0.380392156862745 0.741176470588235 0.650980392156863
0.372549019607843 0.733333333333333 0.654901960784314
0.364705882352941 0.721568627450980 0.658823529411765
0.356862745098039 0.713725490196078 0.662745098039216
0.349019607843137 0.705882352941177 0.666666666666667
0.341176470588235 0.698039215686274 0.670588235294118
0.337254901960784 0.690196078431373 0.670588235294118
0.329411764705882 0.682352941176471 0.674509803921569
0.317647058823529 0.670588235294118 0.682352941176471
0.309803921568627 0.658823529411765 0.686274509803922
0.301960784313725 0.650980392156863 0.690196078431373
0.298039215686275 0.647058823529412 0.694117647058824
0.290196078431373 0.639215686274510 0.694117647058824
0.282352941176471 0.627450980392157 0.701960784313725
0.270588235294118 0.615686274509804 0.705882352941177
0.266666666666667 0.611764705882353 0.709803921568627
0.262745098039216 0.607843137254902 0.709803921568627
0.250980392156863 0.592156862745098 0.713725490196078
0.243137254901961 0.584313725490196 0.717647058823529
0.235294117647059 0.576470588235294 0.717647058823529
0.227450980392157 0.568627450980392 0.721568627450980
0.219607843137255 0.556862745098039 0.725490196078431
0.215686274509804 0.552941176470588 0.729411764705882
0.203921568627451 0.541176470588235 0.737254901960784
0.196078431372549 0.529411764705882 0.737254901960784
0.200000000000000 0.521568627450980 0.733333333333333
0.203921568627451 0.517647058823529 0.733333333333333
0.211764705882353 0.509803921568627 0.729411764705882
0.219607843137255 0.501960784313725 0.725490196078431
0.223529411764706 0.490196078431373 0.721568627450980
0.235294117647059 0.478431372549020 0.713725490196078
0.239215686274510 0.470588235294118 0.713725490196078
0.239215686274510 0.470588235294118 0.713725490196078
0.247058823529412 0.458823529411765 0.705882352941177
0.258823529411765 0.447058823529412 0.698039215686274
0.266666666666667 0.439215686274510 0.694117647058824
0.270588235294118 0.431372549019608 0.690196078431373
0.274509803921569 0.427450980392157 0.686274509803922
0.282352941176471 0.415686274509804 0.682352941176471
0.290196078431373 0.403921568627451 0.678431372549020
0.301960784313725 0.392156862745098 0.674509803921569
0.305882352941176 0.388235294117647 0.670588235294118
0.305882352941176 0.384313725490196 0.670588235294118];
%% 图片尺寸设置(单位:厘米)
figureUnits = 'centimeters';
figureWidth = 15;
figureHeight = 12;
%% 窗口设置
figureHandle = figure;
set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]);
%% 方块热图灵活版绘制
squareheatmappro(Z,80,1000)
hTitle = title('Square Heatmap Plot');
hXLabel = xlabel('K (w)');
hYLabel = ylabel('Samples');
%% 细节优化
% 赋色
colormap(map)
colorbar
% 坐标区调整
axis equal tight
set(gca, 'Box', 'off', ... % 边框
'Layer','bottom',... % 图层
'LineWidth',1,... % 线宽
'XGrid', 'off', 'YGrid', 'off', ... % 网格
'TickDir', 'out', 'TickLength', [0 0], ... % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ... % 小刻度
'XColor', [.1 .1 .1], 'YColor', [.1 .1 .1],... % 坐标轴颜色
'xtick',1:10,... % 坐标轴刻度
'xticklabels',1:10,...
'ytick',1:10,...
'yticklabels',1:10)
% 字体和字号
set(gca, 'FontName', 'Arial', 'FontSize', 10)
set([hXLabel, hYLabel], 'FontSize', 11, 'FontName', 'Arial')
set(hTitle, 'FontSize', 12, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])
函数代码
function squareheatmappro(data,minsz,maxsz)
% data - m*n matrix
% minsz - size of the min bubble
% maxsz - size of the max bubble
% 构造方块位置数据
x = 1:size(data,2);
y = 1:size(data,1);
[X,Y] = meshgrid(x,y);
Z = data;
% 构造网格数据
w = x(2)-x(1);
Xt = (x(1)-w/2):w:(x(end)+w/2);
Yt = (y(1)-w/2):w:(y(end)+w/2);
[Xmesh,Ymesh] = meshgrid(Xt,Yt);
Zmesh = zeros(size(Xmesh));
% 构造方块尺寸数据
minz = min(Z(:));
maxz = max(Z(:));
S = minsz+(Z(:)-minz)./(maxz-minz).*(maxsz-minsz);
% 绘制方块热图
mesh(Xmesh,Ymesh,Zmesh,'EdgeColor','k','LineWidth',1)
hold on
scatter(X(:),Y(:),S,Z(:),'s','filled')
view(0,90)
end
小结
本文介绍的 MATLAB 方块热图绘制方法,结合灵活的自定义配色和细节优化,适合展示复杂数据的空间分布和变化趋势。通过合理调整图形属性,提升图像的专业性和视觉体验,方便科研报告和数据分析展示。

&spm=1001.2101.3001.5002&articleId=149422279&d=1&t=3&u=08b199849a1b4b0ba3e2e95bb6680025)
2640

被折叠的 条评论
为什么被折叠?



