MATLAB 密度图画法(hist3)

这篇博客介绍了如何利用MATLAB简洁地将散点图转换为密度图。作者提供了一段代码,该代码首先通过hist3函数计算密度,然后使用imagesc显示密度矩阵,并通过设置透明度和颜色轴来美化图像。此外,还提供了对代码中关键步骤的解释,包括为何要将零值设为NaN以及如何调整坐标轴和颜色条。
摘要由CSDN通过智能技术生成

任务描述:已有散点图,想画密度图,效果如下
在这里插入图片描述
网上很多方法都太麻烦了,废话不多说,直接贴代码:

clc
clear
close all

figure(1)

X = [DI,Er];      %DI Er 是两个列向量

N = hist3(X,'CdataMode','auto','Ctrs',{0:0.005:3 0:0.005:1.4});  % N的值正是密度
% N是一个二维矩阵,Size大小由Ctrs决定,此处是280*600,因为0.005*600=3 , 0.005*280=1.4

N = flipud(N');   %转置是为了将矩阵的横纵轴与我们熟悉的xy方向对应一致

N(N==0)=nan;      %零值设为nan是为了之后以isnan判断的方式将个数为零的格子涂为白色

h = imagesc(N);   %生成N的二维矩阵,矩阵的值是密度

set(h,'alphadata',~isnan(N))  %将nan值涂为白色,否则就会显示为背景色(蓝色)

%% =================以下就是我自己的一些作图美观设置,可作参考,但没有也没事
hco = colorbar;
set(get(hco,'label'),'string','Counts','FontSize',18,'Fontname', 'Arial');
caxis([0,1000]) 
ax = gca; 
ax.XTickLabel={'0','0.5','1','1.5','2','2.5','3'};
ax.YTick = [0,40,80,120,160,200,240,280];
ax.YTickLabel={'1.4','1.2','1','0.8','0.6','0.4','0.2','0'};
set(gca,'FontSize',15,'Fontname', 'Arial');
ylabel('DI','FontSize',18,'Fontname', 'Arial')                                   
xlabel('Er','FontSize',18,'Fontname', 'Arial') 

至于为什么要将零值赋值为nan,请看:Matlab imagesc中将nan、inf或者特定值设为白色
坐标轴调整,请看:matlab手动指定坐标轴位置和标签
hist3的介绍请看:hist3
密度图的坐标轴为什么是反的,请看:matlab 通过hist3画密度图

I hope this would bring some insight to you!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值