【发布时间】:2022-01-08 06:40:44
【问题描述】:
我有一个二维数组,其中包含来自[1e-5, 1e5] 的对数分布值。由于各种原因,我想更改超出此范围的限制的颜色条。我使用 caxis 执行此操作,例如caxis([a,b]),其中a 和b 是所需的指数。但是,生成的颜色条无法正确映射。
示例问题,从日志分布值和[1e-5, 1e5] 的期望限制开始:
% Create log values and generate heatmap
dim = 10;
x = logspace(-5,5,dim);
values = repmat(x,[dim,1]);
hm = heatmap(values);
% Make visually clearer
hm.GridVisible = 'off';
colormap default
ax1 = gca;
ax1.XDisplayLabels = nan(length(ax1.XDisplayData),1);
ax1.YDisplayLabels = nan(length(ax1.YDisplayData),1);
% Colour bar scaling - PROBLEM
set(gca,'ColorScaling','log') % Log scale
caxis([-5,5]) % Lower/Upper limits (exponents) (to change!)
ax2 = struct(gca);
cb = ax2.Colorbar;
cb.Ticks = [1e0,1e1,1e2,1e3,1e4,1e5]; % Example ticks to show problem...
指定限制后,颜色映射会出现倾斜。如果您在 set 行之后暂停代码,caxis 的值将给出 [-11.5, 11.5],而不是 [-5, 5]。因此,如果我想要一个固定的颜色范围,例如[1e-7, 1e7],我显然需要捏造这些值。这是怎么回事? caxis 是否没有以应有的方式定义指数?
【问题讨论】:
标签: matlab heatmap matlab-figure colorbar