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
相关推荐
多多*1 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
Wish3D2 小时前
阿里云OSS 上传文件 Python版本
开发语言·python·阿里云
凤年徐2 小时前
【数据结构初阶】单链表
c语言·开发语言·数据结构·c++·经验分享·笔记·链表
oioihoii2 小时前
C++11 右值引用:从入门到精通
开发语言·c++
朝新_5 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir5 小时前
Calendar类日期设置进位问题
java·开发语言
风逸hhh6 小时前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮7 小时前
Python训练第四十三天
开发语言·python
ascarl20108 小时前
准确--k8s cgroup问题排查
java·开发语言
fpcc8 小时前
跟我学c++中级篇——理解类型推导和C++不同版本的支持
开发语言·c++