MATLAB:彩色贴图标签之间的等效距离

时间:2016-03-16 03:02:21

标签: matlab plot colormap

考虑以下用于绘制此图的代码,code1使用从get_my_color_map函数定义的颜色贴图绘制此图。到目前为止一切都很好,除了颜色条上的刻度分布。我不希望它以线性方式显示。我希望颜色标记与该矩阵的成员之间的等效空间一起分布:

[-40 -30 -20 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5]

我看过this但是,我不知道如何在我自己的情况下解决问题。

enter image description here

function code1()

[x,y] = meshgrid([-8:.2:8]);
Z = (4+x-0.5*x.*x).*1./(2+sin(-(x.^2+y.^2)/(4*pi)));
C=Z;
surf(x,y,Z,C)
ticks = [-40 -30 -20 -10 -9:5];
mycolormap=get_my_color_map(min(ticks),max(ticks));
colormap(mycolormap);
hC=colorbar;
ticks_string=strread(num2str(ticks),'%s');
set(hC,'YTick',ticks);
set(hC,'YTick',ticks);
set(hC,'ylim',[min(ticks) max(ticks)]);

end

function [ mycolormap ] = get_my_color_map(blue_min,red_max)

    mycolormap=[];

    for k= blue_min:-1 % add blue
        if k>=-10
            blue=-k/10.0*0.7;
        else
            blue=0.7+(-k-10.0)/(-10-blue_min)*0.3;
        end
        mycolormap=[mycolormap; 1-blue, 1-blue, 1]; %#ok<AGROW>
    end
    mycolormap=[mycolormap; 1, 1, 1]; % add white
    for k= +1:red_max % add red
        red=k/red_max;
        mycolormap=[mycolormap; 1, 1-red, 1-red]; %#ok<AGROW>
    end

end

enter image description here

0 个答案:

没有答案