【问题标题】:blur a portion of colormap模糊颜色图的一部分
【发布时间】:2018-02-13 08:47:56
【问题描述】:

从这段代码和图开始:

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

我可以通过修改颜色图来突出显示一定范围内的值[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

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

编辑:

代码使用了findnearest 函数

【问题讨论】:

    标签: matlab plot colorbar


    【解决方案1】:

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

    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, :);
    

    【讨论】:

    • 旁注:如果您想要更平滑的过渡,您可以在任何计算之前先对颜色图进行上采样(即在计算 l1l2 之前),如下所示:cm = parula(256); colormap(cm);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多