Jul*_*iaR 5 matlab plot heatmap matlab-figure
我有一个整数矩阵M(1,2或3).我想用热图表示它并将固定颜色与1,2和3相关联.我使用这段代码:
map = [1, 1, 0; % color for 1 (yellow)
1, 0.5, 0 ; % color for 2 (orange)
0, 1, 0.5]; % color for 3 (green)
HeatMap(M,'Colormap',map,'Symmetric','false');
Run Code Online (Sandbox Code Playgroud)
当M包含至少一个1,一个2和一个3时,没有任何问题.但是当M仅包含3个时,热图不是我想要的(全绿色).我怎么解决这个问题?
看来你不能轻易做到这一点。在 Matlab 2013b 或更早版本(我在 2014b 中没有尝试过)中,当您HeatMap在内部调用它时,会经历创建轴和设置颜色等的过程。最终它到达了plot.m调用以下函数的地方:
function scaleHeatMap(hHMAxes, obj)
%SCALEHEATMAP Update the CLIM in image axes
if obj.Symmetric
maxval = min(max(abs(obj.Data(:))), obj.DisplayRange);
minval = -maxval;
else
maxval = min(max(obj.Data(:)), obj.DisplayRange);
minval = min(obj.Data(:));
end
set(hHMAxes, 'Clim', [minval,maxval]);
end
Run Code Online (Sandbox Code Playgroud)
该函数实际上确实使用热图 ( ) 的轴定义了颜色图的限制hHMAxes,但不幸的是,调用不会返回该对象HeatMap()。
我能想到摆脱这个问题的唯一方法是:
plot.m功能。这通常是一个非常糟糕的主意。myHeatMap函数,它可以执行原始函数所做的所有操作,但对Clim轴上的属性进行了更改的功能。HeatMap根本不要使用并使用例如surf或创建一个外观相同的图imshow。if在调用之前执行一条语句HeatMap,并检查颜色图中是否有单个值 ( numel(unique(M(:)))==1),如果发生这种情况,请将您的map颜色图更改为您选择的颜色的单值颜色图。到目前为止,最简单的一个是 4。
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |