模糊一部分色彩图

时间:2017-09-05 06:40:43

标签: matlab plot colorbar

从这段代码开始:

clc
clear all

[x, y, z] = peaks(1000);

figure;
p = surf(x,y,z);
shading flat

cm=colormap;

Xm=-7;
XM=8;
caxis([Xm XM])

colorbar

from

我可以通过修改色彩图来突出显示某个范围[Xm XM]中的值。例如,通过将该范围内的颜色设置为红色:

[x, y, z] = peaks(1000);

figure;
p = surf(x,y,z);
shading flat

cm=colormap;

Xm=-7;
XM=8;
caxis([Xm XM])

x1=2;
x2=4;
l1=findnearest(x1,linspace(Xm,XM,length(cm)));
l2=findnearest(x2,linspace(Xm,XM,length(cm)));

cm(l1:l2,:)=repmat([1 0 0],l2-l1+1,1);

colormap(cm)
colorbar

to

有没有办法让过渡不那么突然?也许通过模糊过渡附近的颜色?

修改

代码使用findnearest函数

1 个答案:

答案 0 :(得分:3)

如果两者之间的颜色不重要,可以使用一些简单的线性渐变:

n = floor((l2-l1+1)/2);
fade = linspace(0, 1, n)';
cm(l1+n,:) = [1 0 0];
cm(l1:l1+n-1,:)=fade * [1 0 0] + (1-fade) * cm(l1-1, :);
cm(l2:-1:l2-n+1,:)=fade * [1 0 0] + (1-fade) * cm(l2+1, :);

enter image description here