Matlab热力图巅峰之作

准备'data.xlsx' 的热力图文件:

main:

Matlab 复制代码
clc;
clear;
close all;
% 相关性气泡热图

%% 数据准备
% 读取Excel文件数据
data = readmatrix('data.xlsx');  % 读取Excel文件中的数据

%% 颜色定义
map = colormap("cool"); 
map = map([2:6,9:13],1:3);

%% 图片尺寸设置(单位:厘米)
close all;
figureUnits = 'centimeters';
figureWidth = 15;
figureHeight = 12;

%% 窗口设置
figureHandle = figure;
set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]);

%% 相关性气泡热图绘制
Cobubbleheatmap(data,50,600)
hTitle = title('Correlation bubble Heatmap Plot');
hXLabel = xlabel('K (w)');
hYLabel = ylabel('Samples');

%% 细节优化
% 赋色
colormap('cool')
cb = colorbar;
% 颜色条调整
caxis([-1 1])
set(cb,'TickDirection','out',...
       'TickLength',0,...
       'Ticks',-1:0.2:1)
% 坐标区调整
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])

%% 图片输出
figW = figureWidth;
figH = figureHeight;
set(figureHandle,'PaperUnits',figureUnits);
set(figureHandle,'PaperPosition',[0 0 figW figH]);
fileout = 'test';
print(figureHandle,[fileout,'.png'],'-r300','-dpng');

辅助函数:

Matlab 复制代码
function Cobubbleheatmap(data,minsz,maxsz)

% 构造气泡位置数据
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)-y/2):w:(y(end)+y/2);
[Xmesh,Ymesh] = meshgrid(Xt,Yt);
Zmesh = zeros(size(Xmesh));

% 构造气泡尺寸数据
% 负
minznega = 0;
maxznega = 1;
negadataidx = find(data<0);
Snega = minsz+(abs(Z(negadataidx))-minznega)./(maxznega-minznega).*(maxsz-minsz);
% 正
minzposi = 0;
maxzposi = 1;
posidataidx = find(data>=0);
Sposi = minsz+(Z(posidataidx)-minzposi)./(maxzposi-minzposi).*(maxsz-minsz);


% 绘制相关性气泡热图
mesh(Xmesh,Ymesh,Zmesh,'EdgeColor','k','LineWidth',1)
hold on
scatter(X(negadataidx),Y(negadataidx),Snega,Z(negadataidx),'filled')
scatter(X(posidataidx),Y(posidataidx),Sposi,Z(posidataidx),'filled')
view(0,90)

end
相关推荐
天若有情67311 小时前
【c++】手撸C++ Promise:从零实现通用异步回调组件,支持链式调用+异常安全
开发语言·前端·javascript·c++·promise
无心水11 小时前
【Python实战进阶】1、Python高手养成指南:四阶段突破法从入门到架构师
开发语言·python·django·matplotlib·gil·python实战进阶·python工程化实战进阶
q***318311 小时前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
合作小小程序员小小店11 小时前
桌面安全开发,桌面二进制%恶意行为拦截查杀%系统安全开发3.0,基于c/c++语言,mfc,win32,ring3,dll,hook,inject,无数据库
c语言·开发语言·c++·安全·系统安全
合作小小程序员小小店11 小时前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#
Codeking__11 小时前
C++ 11 atomic 原子性操作
开发语言·c++
懂得节能嘛.11 小时前
【Java动态线程池】Redis监控+动态调参
java·开发语言·redis
ModestCoder_12 小时前
ROS Bag与导航数据集技术指南
开发语言·人工智能·自然语言处理·机器人·具身智能
卡提西亚12 小时前
C++笔记-34-map/multimap容器
开发语言·c++·笔记