我正在热图上绘制四个独特的数据集; x,y,单元格颜色,第四是单元格标签。可自定义的热图函数here提供了一种简单的方法,也可以自动调整热图的单元格中文本字体的颜色,以保持相对于单元格背景的高对比度。请参阅下面.fig的屏幕截图,其中文本已根据需要自动从黑色更改为白色:
MWE:
cell_text = 1:1:66;
cell_colour_data = 53:1:(53+65);
upper_colour_lim = max(cell_colour_data);
lower_colour_lim = min(cell_colour_data);
xvalues = 1:1:6;
yvalues = 1:1:11;
figure();
my_colormap = bone;
my_gridlines = '-';
colour_data_layernum = reshape(cell_colour_data,...
[length(yvalues),...
length(xvalues)]);
text_data_layernum = reshape(cell_text,...
[length(yvalues),...
length(xvalues)]);
clabel = arrayfun(@(x){sprintf('%0.2f',x)}, text_data_layernum);
heatmap_custom(colour_data_layernum, xvalues, yvalues, clabel,...
'Colormap', my_colormap, 'GridLines', my_gridlines,...
'TextColor', 'xor',...
'MinColorValue', lower_colour_lim, 'MaxColorValue', upper_colour_lim);
请注意,此程序包需要EraseMode来启动标签字体的颜色切换。由于引入Handle Graphics V2后不推荐使用EraseMode,因此您需要R2014a或更早版本才能复制此行为。
请注意,如果未重命名从此File Exchange软件包下载的heatmap.m
文件,您将会遇到MATLAB的heatmap.m
函数的问题,这些问题很可能表现为下标索引错误。在上面的MWE中,下载的文件已重命名为heatmap_custom.m
。