我有一些与温度相对应的离散值的数据
我想创建一个热图(更像是我猜的热棒),其中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只重命名轴上的标签,但我无法理解任何其他缩放方法。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
我不了解HeatMap
,但imagesc
做not handle non-equally spaced coordinates。相反,您可以使用pcolor(X, Y, C)
:
pcolor([h 50], [0 1], [temp 0 ; temp 0])
shading flat
正如您在问题中所述,temp
的值在两个h
值之间应用,这意味着您需要h
中的一个值更多而不是temp
来实现你想要的。我刚刚添加了值50,我不确定这是否适合您。
另一方面,pcolor
将C
的值与边(而非间隔)相关联,以便能够在边之间插值C
- 值。 shading flat
告诉它在整个时间间隔内使用下边缘的C
- 值,但仍然需要temp
中更多的值,然后忽略 - 我使用0。边缘的引用适用于两个维度,这就是为什么C
需要在每个维度上至少包含两个元素的原因。在这里,我只是在垂直方向上复制数据,[temp 0 ; zeros(size(temp)) 0]
也可以。