Matlab, Python:修复色图为指定值

2024-04-25 22:33:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个简单但常见的任务,当试图根据二维矩阵值修复颜色贴图时。 要在Matlab中演示考虑问题,解决方案不需要在Matlab中(即,此处提供的代码仅用于演示目的)。


x = [0,1,2; 3,4,5; 6,7,8];
imagesc(x)
axis square
axis off
因此输出为:
enter image description here
当某些值超过最大值时,会发生如下情况:
^{pr2}$ 这看起来很合乎逻辑,但当我们想比较/跟踪两个映射中的元素时,就会出现问题。由于colormap关联被更改,几乎不可能找到单个单元格进行比较/跟踪等。 enter image description here
我实施的解决方案是将矩阵屏蔽为:

x = [0,1,2; 3,4,5; 6,7,18];
m = 8;
x(x>=m) = m;
非常好。
因为提供的代码需要搜索/过滤(额外的时间消耗!)我想知道是否有一种通用的/更有效的方法来实现这项工作?

出现此问题的一种情况是,当我们有许多连续的模拟,并希望对进度进行有意义的动画制作时;在这种情况下,每种颜色都应保持其关联不变。在


Tags: 代码目的元素颜色情况矩阵解决方案屏蔽
3条回答
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)

索引很快,所以我不认为你需要担心。在

但是,在Matlab中,可以将clims参数传递给imagesc

imagesc(x,[0 8]);

这会将高于8的所有值映射到色阶中的顶部颜色,将低于0的所有值映射到颜色比例中的底部颜色,然后扩展介于两者之间的颜色比例。在

^{}。在

在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()
因此vminvmax是颜色映射全范围的边界限制。

相关问题 更多 >