尝试根据值的二维矩阵修复色彩映射时,这是一项简单但常见的任务。
为了演示 Matlab 中的问题,解决方案不需要在 Matlab 中(即,此处提供的代码仅用于演示目的)。
x = [0,1,2; 3,4,5; 6,7,8];
imagesc(x)
axis square
axis off
所以输出如下:
x = [0,1,2; 3,4,5; 6,7,18];
当我们希望比较/跟踪两个地图中的元素时,这看起来很合理但会产生问题。由于色图关联被改变,因此几乎不可能找到用于比较/跟踪等的单个单元。
x = [0,1,2; 3,4,5; 6,7,18];
m = 8;
x(x>=m) = m;
这很有效。
出现此问题的一个案例是,我们按顺序进行了许多模拟,并希望制作有关进展的感觉制作动画;在这种情况下,每种颜色应保持其关联固定。
答案 0 :(得分:2)
索引很快,所以我认为你不用担心。
但是,在Matlab中,您可以将clims
参数传递给imagesc
:
imagesc(x,[0 8]);
将8以上的所有值映射到色标中的顶部颜色,将0以下的所有值映射到色标中的底部颜色,然后拉伸中间颜色的比例。
答案 1 :(得分:2)
在使用包MatPlotLib
的 Python 中,解决方案如下:
import pylab as pl
x = [[0,1,2],[3,4,5],[6,7,18]]
pl.matshow(x, vmin=0, vmax=8)
pl.axis('image')
pl.axis('off')
show()
因此vmin
和vmax
是整个色彩映射的边界限制。
答案 2 :(得分:1)
f1 = figure;
x = [0,1,2; 3,4,5; 6,7,8];
imagesc(x)
axis square
axis off
limits = get(gca(f1),'CLim');
f2 = figure;
z = [0,1,2; 3,4,5; 6,7,18];
imagesc(z)
axis square
axis off
caxis(limits)