考虑以下用于绘制此图的代码,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但是,我不知道如何在我自己的情况下解决问题。
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