概要
-
-
读取 data.mat 文件,数据为一个 10×10 的矩阵,命名为 Z。
-
定义 x 和 y 的标签名称,都是表示车辆相关属性(如 Carb、Wt、Hp 等)。
-
-
颜色映射设置:
-
定义了一个名为 map 的颜色矩阵,包含大量 RGB 三元组。
-
该颜色矩阵可能用于后续的可视化,例如热力图、矩阵图或者相关性图的颜色填充。
-
整体架构流程
1️⃣ 数据准备阶段
-
加载数据:
load data.mat
说明:读取data.mat
文件,假设内部包含变量data
,为一个 10×10 的矩阵。 -
定义标签:
xlb 与 ylb 用于图表坐标轴的标签。
2️⃣ 颜色映射定义
-
定义自定义颜色表 map:
map = [...];
说明:-
提前定义好渐变颜色值数组,范围大致为深色到浅色,类似于自定义 colormap。
-
用于后续绘制 heatmap 或 imagesc 时的颜色参考。
-
3️⃣ 数据可视化阶段(后续步骤通常包含)
虽然您的代码没有贴完,以下为常规流程:
-
绘制矩阵图
常用函数:-
imagesc(Z)
-
heatmap
-
pcolor
或surf
-
设置坐标轴标签:
set(gca, 'XTickLabel', xlb, 'YTickLabel', ylb)
-
设置颜色映射:
colormap(map)
-
添加颜色条:
colorbar
-
4️⃣ 美化与输出
-
字体与标签调整
-
xlabel
,ylabel
,title
添加标题和说明 -
字体大小、线宽设置
-
技术名词解释
1️⃣ 数据相关
-
矩阵(Matrix)
多行多列的数字表格,是 MATLAB 里最基础的数据结构。 -
标签(Label)
指图表中 X 轴和 Y 轴的描述文字,比如变量名称或分类名称。 -
相关性矩阵(Correlation Matrix)
各变量之间两两相关系数的矩阵,常用于统计分析和机器学习特征工程。
2️⃣ 绘图与可视化
-
Colormap(颜色映射表)
定义一组颜色梯度,用于将数值映射为颜色。MATLAB 中可以自定义或使用内置的如 jet、parula、hot 等。 -
imagesc
MATLAB 函数:显示一个矩阵并根据数值大小用颜色填充,自动缩放颜色范围。 -
heatmap
MATLAB 函数:显示热力图,是一种矩阵可视化方式,支持更丰富的标签和交互。 -
colorbar
MATLAB 函数:添加颜色条,表示颜色与数值的对应关系。 -
gca(Get Current Axes)
MATLAB 函数:返回当前图形窗口中的坐标轴对象,用于设置标签、字体、颜色等属性。
3️⃣ MATLAB 术语
-
MAT 文件(.mat 文件)
MATLAB 特有的文件格式,用于保存变量、矩阵和其他数据结构。 -
set 函数
MATLAB 函数:用于修改图形对象的属性,如字体大小、线宽、标签等。 -
saveas / print / exportgraphics
MATLAB 函数:用于将图像导出为 PNG、PDF、SVG 等格式。
4️⃣ 图形美化相关
-
字体大小(FontSize)
控制坐标轴标签、标题等文字的显示大小。 -
线宽(LineWidth)
控制图形元素(如线条、边框)的粗细。 -
透明度(Alpha)
控制颜色或对象的透明程度,heatmap 类图中有时可以设置。
完整代码
clc;clear
%% 数据准备
% 读取数据
load data.mat%数据是10*10的矩阵
% 数据矩
Z = data;
% 标签
xlb = {'Carb','Wt','Hp','Cyl','Disp','Qsec','Vs','Mpg','Drat','Gear'};
ylb = {'Carb','Wt','Hp','Cyl','Disp','Qsec','Vs','Mpg','Drat','Gear'};
%% 颜色定义
map = [0.403921568627451 0 0.121568627450980
0.411764705882353 0 0.121568627450980
0.419607843137255 0.003921568627451 0.121568627450980
0.431372549019608 0.007843137254902 0.125490196078431
0.443137254901961 0.007843137254902 0.125490196078431
0.454901960784314 0.011764705882353 0.125490196078431
0.462745098039216 0.015686274509804 0.129411764705882
0.482352941176471 0.023529411764706 0.133333333333333
0.490196078431373 0.027450980392157 0.133333333333333
0.501960784313725 0.031372549019608 0.137254901960784
0.513725490196078 0.035294117647059 0.137254901960784
0.533333333333333 0.039215686274510 0.141176470588235
0.541176470588235 0.043137254901961 0.141176470588235
0.560784313725490 0.050980392156863 0.145098039215686
0.568627450980392 0.050980392156863 0.145098039215686
0.580392156862745 0.054901960784314 0.149019607843137
0.592156862745098 0.058823529411765 0.149019607843137
0.603921568627451 0.062745098039216 0.152941176470588
0.611764705882353 0.062745098039216 0.152941176470588
0.619607843137255 0.066666666666667 0.152941176470588
0.631372549019608 0.070588235294118 0.156862745098039
0.639215686274510 0.074509803921569 0.156862745098039
0.654901960784314 0.078431372549020 0.160784313725490
0.670588235294118 0.082352941176471 0.160784313725490
0.678431372549020 0.086274509803922 0.164705882352941
0.690196078431373 0.090196078431373 0.164705882352941
0.698039215686274 0.098039215686275 0.168627450980392
0.705882352941177 0.105882352941176 0.176470588235294
0.709803921568627 0.117647058823529 0.180392156862745
0.713725490196078 0.129411764705882 0.184313725490196
0.717647058823529 0.137254901960784 0.188235294117647
0.725490196078431 0.145098039215686 0.192156862745098
0.733333333333333 0.164705882352941 0.200000000000000
0.737254901960784 0.176470588235294 0.203921568627451
0.745098039215686 0.184313725490196 0.211764705882353
0.749019607843137 0.192156862745098 0.215686274509804
0.749019607843137 0.200000000000000 0.215686274509804
0.756862745098039 0.211764705882353 0.223529411764706
0.764705882352941 0.223529411764706 0.227450980392157
0.772549019607843 0.239215686274510 0.235294117647059
0.772549019607843 0.247058823529412 0.239215686274510
0.776470588235294 0.258823529411765 0.243137254901961
0.784313725490196 0.270588235294118 0.250980392156863
0.788235294117647 0.278431372549020 0.254901960784314
0.796078431372549 0.290196078431373 0.258823529411765
0.800000000000000 0.298039215686275 0.262745098039216
0.803921568627451 0.309803921568627 0.266666666666667
0.807843137254902 0.317647058823529 0.274509803921569
0.815686274509804 0.333333333333333 0.282352941176471
0.823529411764706 0.345098039215686 0.290196078431373
0.827450980392157 0.356862745098039 0.290196078431373
0.835294117647059 0.368627450980392 0.298039215686275
0.839215686274510 0.376470588235294 0.301960784313725
0.843137254901961 0.384313725490196 0.309803921568627
0.847058823529412 0.392156862745098 0.317647058823529
0.850980392156863 0.407843137254902 0.325490196078431
0.854901960784314 0.415686274509804 0.333333333333333
0.858823529411765 0.423529411764706 0.337254901960784
0.866666666666667 0.439215686274510 0.349019607843137
0.870588235294118 0.447058823529412 0.356862745098039
0.874509803921569 0.458823529411765 0.364705882352941
0.878431372549020 0.466666666666667 0.372549019607843
0.882352941176471 0.478431372549020 0.376470588235294
0.882352941176471 0.486274509803922 0.384313725490196
0.890196078431372 0.498039215686275 0.396078431372549
0.898039215686275 0.513725490196078 0.407843137254902
0.898039215686275 0.517647058823529 0.411764705882353
0.905882352941176 0.529411764705882 0.423529411764706
0.909803921568627 0.541176470588235 0.427450980392157
0.913725490196078 0.549019607843137 0.435294117647059
0.917647058823529 0.556862745098039 0.443137254901961
0.921568627450980 0.568627450980392 0.450980392156863
0.925490196078431 0.576470588235294 0.454901960784314
0.929411764705882 0.588235294117647 0.462745098039216
0.937254901960784 0.603921568627451 0.474509803921569
0.941176470588235 0.615686274509804 0.482352941176471
0.949019607843137 0.623529411764706 0.490196078431373
0.949019607843137 0.631372549019608 0.498039215686275
0.952941176470588 0.643137254901961 0.505882352941176
0.956862745098039 0.650980392156863 0.513725490196078
0.956862745098039 0.658823529411765 0.525490196078431
0.960784313725490 0.666666666666667 0.537254901960784
0.960784313725490 0.674509803921569 0.545098039215686
0.960784313725490 0.682352941176471 0.552941176470588
0.960784313725490 0.694117647058824 0.568627450980392
0.964705882352941 0.698039215686274 0.580392156862745
0.964705882352941 0.705882352941177 0.588235294117647
0.968627450980392 0.713725490196078 0.596078431372549
0.968627450980392 0.721568627450980 0.603921568627451
0.968627450980392 0.729411764705882 0.615686274509804
0.968627450980392 0.741176470588235 0.627450980392157
0.972549019607843 0.749019607843137 0.639215686274510
0.972549019607843 0.752941176470588 0.647058823529412
0.976470588235294 0.764705882352941 0.662745098039216
0.976470588235294 0.772549019607843 0.670588235294118
0.976470588235294 0.776470588235294 0.678431372549020
0.980392156862745 0.788235294117647 0.690196078431373
0.980392156862745 0.796078431372549 0.698039215686274
0.980392156862745 0.800000000000000 0.705882352941177
0.980392156862745 0.807843137254902 0.717647058823529
0.984313725490196 0.823529411764706 0.737254901960784
0.984313725490196 0.831372549019608 0.745098039215686
0.988235294117647 0.835294117647059 0.752941176470588
0.988235294117647 0.843137254901961 0.764705882352941
0.988235294117647 0.850980392156863 0.772549019607843
0.992156862745098 0.858823529411765 0.780392156862745
0.988235294117647 0.862745098039216 0.784313725490196
0.988235294117647 0.870588235294118 0.796078431372549
0.988235294117647 0.870588235294118 0.800000000000000
0.984313725490196 0.874509803921569 0.807843137254902
0.984313725490196 0.878431372549020 0.819607843137255
0.984313725490196 0.882352941176471 0.827450980392157
0.984313725490196 0.886274509803922 0.831372549019608
0.984313725490196 0.890196078431372 0.839215686274510
0.980392156862745 0.894117647058824 0.843137254901961
0.980392156862745 0.898039215686275 0.847058823529412
0.980392156862745 0.905882352941176 0.858823529411765
0.980392156862745 0.909803921568627 0.866666666666667
0.976470588235294 0.913725490196078 0.874509803921569
0.976470588235294 0.917647058823529 0.882352941176471
0.976470588235294 0.921568627450980 0.890196078431372
0.976470588235294 0.925490196078431 0.898039215686275
0.976470588235294 0.929411764705882 0.901960784313726
0.972549019607843 0.933333333333333 0.909803921568627
0.972549019607843 0.933333333333333 0.913725490196078
0.972549019607843 0.941176470588235 0.921568627450980
0.972549019607843 0.949019607843137 0.933333333333333
0.968627450980392 0.952941176470588 0.941176470588235
0.968627450980392 0.956862745098039 0.949019607843137
0.968627450980392 0.960784313725490 0.952941176470588
0.968627450980392 0.960784313725490 0.960784313725490
0.968627450980392 0.964705882352941 0.964705882352941
0.960784313725490 0.964705882352941 0.964705882352941
0.952941176470588 0.960784313725490 0.964705882352941
0.952941176470588 0.960784313725490 0.964705882352941
0.945098039215686 0.956862745098039 0.960784313725490
0.937254901960784 0.952941176470588 0.960784313725490
0.933333333333333 0.952941176470588 0.960784313725490
0.925490196078431 0.949019607843137 0.960784313725490
0.921568627450980 0.945098039215686 0.956862745098039
0.917647058823529 0.945098039215686 0.956862745098039
0.909803921568627 0.941176470588235 0.956862745098039
0.901960784313726 0.937254901960784 0.952941176470588
0.894117647058824 0.933333333333333 0.952941176470588
0.890196078431372 0.933333333333333 0.952941176470588
0.886274509803922 0.929411764705882 0.952941176470588
0.882352941176471 0.925490196078431 0.952941176470588
0.874509803921569 0.925490196078431 0.949019607843137
0.866666666666667 0.917647058823529 0.949019607843137
0.862745098039216 0.917647058823529 0.949019607843137
0.862745098039216 0.917647058823529 0.949019607843137
0.854901960784314 0.913725490196078 0.945098039215686
0.847058823529412 0.909803921568627 0.945098039215686
0.839215686274510 0.905882352941176 0.945098039215686
0.835294117647059 0.905882352941176 0.941176470588235
0.827450980392157 0.901960784313726 0.941176470588235
0.823529411764706 0.898039215686275 0.941176470588235
0.823529411764706 0.898039215686275 0.941176470588235
0.811764705882353 0.894117647058824 0.937254901960784
0.800000000000000 0.886274509803922 0.933333333333333
0.796078431372549 0.886274509803922 0.933333333333333
0.784313725490196 0.874509803921569 0.929411764705882
0.772549019607843 0.870588235294118 0.925490196078431
0.764705882352941 0.866666666666667 0.921568627450980
0.752941176470588 0.862745098039216 0.921568627450980
0.745098039215686 0.858823529411765 0.917647058823529
0.741176470588235 0.854901960784314 0.917647058823529
0.729411764705882 0.850980392156863 0.913725490196078
0.713725490196078 0.843137254901961 0.909803921568627
0.705882352941177 0.839215686274510 0.905882352941176
0.694117647058824 0.831372549019608 0.901960784313726
0.686274509803922 0.831372549019608 0.901960784313726
0.678431372549020 0.827450980392157 0.901960784313726
0.670588235294118 0.823529411764706 0.898039215686275
0.654901960784314 0.811764705882353 0.894117647058824
0.650980392156863 0.811764705882353 0.894117647058824
0.647058823529412 0.807843137254902 0.890196078431372
0.635294117647059 0.803921568627451 0.886274509803922
0.619607843137255 0.796078431372549 0.882352941176471
0.611764705882353 0.792156862745098 0.882352941176471
0.603921568627451 0.788235294117647 0.878431372549020
0.592156862745098 0.784313725490196 0.874509803921569
0.588235294117647 0.780392156862745 0.874509803921569
0.580392156862745 0.772549019607843 0.870588235294118
0.564705882352941 0.768627450980392 0.866666666666667
0.552941176470588 0.760784313725490 0.862745098039216
0.545098039215686 0.756862745098039 0.862745098039216
0.529411764705882 0.745098039215686 0.854901960784314
0.517647058823529 0.737254901960784 0.850980392156863
0.505882352941176 0.733333333333333 0.847058823529412
0.490196078431373 0.721568627450980 0.843137254901961
0.482352941176471 0.717647058823529 0.839215686274510
0.474509803921569 0.713725490196078 0.839215686274510
0.462745098039216 0.705882352941177 0.835294117647059
0.443137254901961 0.690196078431373 0.823529411764706
0.435294117647059 0.682352941176471 0.819607843137255
0.423529411764706 0.678431372549020 0.815686274509804
0.415686274509804 0.670588235294118 0.815686274509804
0.403921568627451 0.662745098039216 0.811764705882353
0.392156862745098 0.654901960784314 0.807843137254902
0.368627450980392 0.643137254901961 0.800000000000000
0.360784313725490 0.639215686274510 0.796078431372549
0.356862745098039 0.635294117647059 0.796078431372549
0.341176470588235 0.627450980392157 0.792156862745098
0.329411764705882 0.615686274509804 0.788235294117647
0.317647058823529 0.607843137254902 0.784313725490196
0.305882352941176 0.603921568627451 0.780392156862745
0.294117647058824 0.592156862745098 0.776470588235294
0.286274509803922 0.588235294117647 0.772549019607843
0.270588235294118 0.580392156862745 0.768627450980392
0.258823529411765 0.572549019607843 0.760784313725490
0.254901960784314 0.568627450980392 0.760784313725490
0.250980392156863 0.560784313725490 0.756862745098039
0.247058823529412 0.552941176470588 0.752941176470588
0.239215686274510 0.545098039215686 0.749019607843137
0.235294117647059 0.541176470588235 0.745098039215686
0.231372549019608 0.533333333333333 0.741176470588235
0.223529411764706 0.525490196078431 0.737254901960784
0.223529411764706 0.521568627450980 0.737254901960784
0.215686274509804 0.513725490196078 0.733333333333333
0.207843137254902 0.505882352941176 0.725490196078431
0.203921568627451 0.498039215686275 0.725490196078431
0.200000000000000 0.490196078431373 0.721568627450980
0.196078431372549 0.486274509803922 0.717647058823529
0.192156862745098 0.482352941176471 0.717647058823529
0.184313725490196 0.474509803921569 0.709803921568627
0.176470588235294 0.462745098039216 0.705882352941177
0.172549019607843 0.458823529411765 0.701960784313725
0.172549019607843 0.458823529411765 0.701960784313725
0.164705882352941 0.447058823529412 0.698039215686274
0.156862745098039 0.439215686274510 0.690196078431373
0.156862745098039 0.431372549019608 0.690196078431373
0.149019607843137 0.423529411764706 0.690196078431373
0.145098039215686 0.419607843137255 0.686274509803922
0.141176470588235 0.415686274509804 0.682352941176471
0.133333333333333 0.403921568627451 0.674509803921569
0.125490196078431 0.396078431372549 0.670588235294118
0.121568627450980 0.388235294117647 0.662745098039216
0.121568627450980 0.384313725490196 0.650980392156863
0.117647058823529 0.376470588235294 0.639215686274510
0.113725490196078 0.368627450980392 0.631372549019608
0.109803921568627 0.360784313725490 0.619607843137255
0.101960784313725 0.349019607843137 0.603921568627451
0.098039215686275 0.341176470588235 0.596078431372549
0.098039215686275 0.341176470588235 0.588235294117647
0.090196078431373 0.329411764705882 0.576470588235294
0.086274509803922 0.317647058823529 0.560784313725490
0.082352941176471 0.309803921568627 0.552941176470588
0.078431372549020 0.301960784313725 0.541176470588235
0.074509803921569 0.298039215686275 0.533333333333333
0.070588235294118 0.290196078431373 0.521568627450980
0.066666666666667 0.278431372549020 0.505882352941176
0.058823529411765 0.266666666666667 0.490196078431373
0.054901960784314 0.262745098039216 0.486274509803922
0.054901960784314 0.258823529411765 0.478431372549020];
% map = flipud(map);
%% 图片尺寸设置(单位:厘米)
figureUnits = 'centimeters';
figureWidth = 15;
figureHeight = 15;
%% 窗口设置
figureHandle = figure;
set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]);
%% 三角热图绘制
% triheatmap(Z,map,xlb,ylb,'trid') % 下三角
triheatmap(Z,map,xlb,ylb,'triu') % 上三角
%% 细节优化
% 赋色
colormap(map)
% 字体和字号
set(gca, 'FontName', 'Arial', 'FontSize', 10)
% 背景颜色
set(gcf,'Color',[1 1 1])
函数代码
function triheatmap(data,map,xlb,ylb,type)
% data - m*n matrix
% map - colormap matrix
% xlb - xticklabels
% ylb - yticklabels
% type - 'trid' lower triangle bubble heatmap
% - 'triu' upper triangle bubble heatmap
% 构造位置数据
x = 1:size(data,2);
y = 1:size(data,1);
[X,Y] = meshgrid(x,y);
Y = flipud(Y);
% 构造网格数据
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);
Ymesh = flipud(Ymesh);
% 三角
switch type
case 'trid'
% 三角热图数据构造
temp = triu(ones(size(data)),1);
idx = find(temp==1);
data(idx) = NaN;
Z = data;
xp = [X(:)-w/2,X(:)+w/2,X(:)+w/2,X(:)-w/2];
yp = [Y(:)+w/2,Y(:)+w/2,Y(:)-w/2,Y(:)-w/2];
% 三角网格数据构造
Zmesh = zeros(size(Xmesh));
temp = triu(ones(size(Zmesh)),2);
idx2 = find(temp==1);
Zmesh(idx2) = NaN;
% 颜色构造
minc = min(data(:));
maxc = max(data(:));
num = size(map,1);
x = linspace(minc,maxc,num);
cmap = interp1(x,map,data(:),'linear'); %...插值
% 三角热图绘制
for i = 1:length(data(:))
if isnan(data(i))
patch(xp(i,1:4),yp(i,1:4),[1 1 1],'edgecolor','none')
else
patch(xp(i,1:4),yp(i,1:4),cmap(i,1:3),'edgecolor','none')
end
end
hold on
mesh(Xmesh,Ymesh,Zmesh,'facecolor','none','EdgeColor',[0.2 0.2 0.2],'LineWidth',1)
view(0,90)
axis equal tight off
set(gca,'xticklabels',[])
for i = 1:size(Z,1)
text(0.3,Y(i,1),xlb{i},'HorizontalAlignment','right','VerticalAlignment','middle','FontSize',11,'FontName','arial','color','k')
text(X(1,i),Y(i,1)+0.6,ylb{i},'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',11,'FontName','arial','color','k')
end
colorbar('southoutside')
caxis([minc maxc])
case 'triu'
% 三角热图数据构造
temp = triu(ones(size(data)));
idx = find(temp==0);
data(idx) = NaN;
Z = data;
xp = [X(:)-w/2,X(:)+w/2,X(:)+w/2,X(:)-w/2];
yp = [Y(:)+w/2,Y(:)+w/2,Y(:)-w/2,Y(:)-w/2];
% 三角网格数据构造
Zmesh = zeros(size(Xmesh));
temp = triu(ones(size(Zmesh)),-1);
idx2 = find(temp==0);
Zmesh(idx2) = NaN;
% 颜色构造
minc = min(data(:));
maxc = max(data(:));
num = size(map,1);
x = linspace(minc,maxc,num);
cmap = interp1(x,map,data(:),'linear'); %...插值
% 三角热图绘制
for i = 1:length(data(:))
if isnan(data(i))
patch(xp(i,1:4),yp(i,1:4),[1 1 1],'edgecolor','none')
else
patch(xp(i,1:4),yp(i,1:4),cmap(i,1:3),'edgecolor','none')
end
end
hold on
mesh(Xmesh,Ymesh,Zmesh,'facecolor','none','EdgeColor',[0.2 0.2 0.2],'LineWidth',1)
view(0,90)
axis equal tight off
set(gca,'yticklabels',[])
for i = 1:size(Z,1)
text(X(1,i),Y(1)+0.5,xlb{i},'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',11,'FontName','arial','color','k')
text(X(1,i)-0.6,Y(i,1),ylb{i},'HorizontalAlignment','right','VerticalAlignment','middle','FontSize',11,'FontName','arial','color','k')
end
colorbar('eastoutside')
caxis([minc maxc])
end
end
小结
这个比一般的热力图更好看,也简洁,通过这个比数据呈现的更加的明显。数据常用的一种表达形式。