MATLAB热图缩放到轴

时间:2013-11-15 14:08:19

标签: matlab

我有一些与温度相对应的离散值的数据

我想创建一个热图(更像是我猜的热棒),其中0 - A的一个是一个温度,A - B是另一个,B - C是另一个,等等。

我已经尝试过HeatMap和imagesc,但这些都没有缩放到轴上。

它们都是以下形式:

h = [0, 13, 17, 22, 25, 30, 40];
temp = [3000, 2200, 2100, 1900, 1800, 1700, 1600]
w = 20;
colormap(hot);
HeatMap(temp,'RowLabels',h);

imagesc(temp, 'XData', h);

HeatMap(h,w,temp); % Not sure if I formatted this right

我知道RowLabels和YData只重命名轴上的标签,但我无法理解任何其他缩放方法。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我不了解HeatMap,但imagescnot handle non-equally spaced coordinates。相反,您可以使用pcolor(X, Y, C)

pcolor([h 50], [0 1], [temp 0 ; temp 0])
shading flat

scaled heatmap

正如您在问题中所述,temp的值在两个h值之间应用,这意味着您需要h中的一个值更多而不是temp来实现你想要的。我刚刚添加了值50,我不确定这是否适合您。

另一方面,pcolorC的值与边(而非间隔)相关联,以便能够在边之间插值C - 值。 shading flat告诉它在整个时间间隔内使用下边缘的C - 值,但仍然需要temp中更多的值,然后忽略 - 我使用0。边缘的引用适用于两个维度,这就是为什么C需要在每个维度上至少包含两个元素的原因。在这里,我只是在垂直方向上复制数据,[temp 0 ; zeros(size(temp)) 0]也可以。