首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成X,Y,Z集合中的热图,Z是颜色的强度

生成X,Y,Z集合中的热图,Z是颜色的强度
EN

Stack Overflow用户
提问于 2020-05-08 19:27:10
回答 1查看 1.6K关注 0票数 1

我有一个数值集X,Y,Z,我想用这些值复制一个热图。箱体的尺寸为20×20,X轴和Y轴的范围为-150至150,颜色为Z。在该bin中,它应该包含该范围内Z值的平均值。

在原产地包含这个工具,用平均值制作一个热图,但是我想用MATLAB来做。我在1中制作的图,我想在MATLAB中做,可以在图中看到。

我试过

代码语言:javascript
复制
load xyz.dat 
x = xyz(:,1); 
y = xyz(:,2);
z = xyz(:,3); 
tbl = table(x,y,z); 
h = heatmap(tbl,'x','y','ColorVariable','z','ColorMethod','mean');

但它打印了这个警告

警告:更新HeatmapChart时出错。源表变量'x‘中的值不归为离散类别。使用离散化函数对值进行分组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 00:24:03

heatmap需要离散的x和y值。你的目标是把你的x和y放入20个离散的垃圾箱,平均每个垃圾箱的z值,但是x和y本身是连续的。

要实现您的目标,请听取警告消息的建议,并使用discretize来存放您的x和y值。

代码语言:javascript
复制
% I used the following stand ins for your data:
% x = rand(540, 1);
% y = rand(540, 1);

n_bins = 20; % Number of grid cells
% If you want the width of the grid cell to be 20, use 
% n_bins = (max(x) - min(x)) / 20; 

x_discrete = discretize(x, n_bins);
y_discrete = discretize(y, n_bins);
tbl = table(X_discrete,y_discrete,z, 'VariableNames', {'x', 'y', 'z'});
h = heatmap(tbl,'x','y','ColorVariable','z','ColorMethod','mean');

注意:为什么这不是样本数据的问题?

用你的样本数据,

代码语言:javascript
复制
x = [49.8, 14.5, -60.7, -21.6, -10.6];
y = [45.3, 7.9, 23.9, -58.5, -55.4];
z = [0.2 , -0.06, -0.35, -0.15, -0.08];
tbl = table(x',y',z', 'VariableNames', {'x', 'y', 'z'});
h = heatmap(tbl,'x','y','ColorVariable','z','ColorMethod','mean');

不会抛出错误,因为它将每个x和y值视为单独的类别。heatmap使用对categorical的调用将连续值转换为分类值。

除了没有真正提供所需的输出(每个点都是自己的框,而不是平均网格单元格)之外,categorical似乎在创建多少分类值方面有一个限制。我没能找到任何关于这个限制的文档,但是通过实验,它在200年中期达到顶峰。因为你的向量有540个元素长,所以你会收到使用discretize的警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61686647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档