如何将颜色条中的所有颜色显示到contourf图中?

时间:2016-10-24 04:46:01

标签: matlab plot matlab-figure contourf

我有这个漂亮的代码,显示两个等高线图。我想知道颜色条中的所有颜色是否可以连续显示而不是以离散的方式显示?以下是代码,谢谢:

[r,x] = meshgrid(1:0.01:50,-1:0.01:5);
am=(1/4)*(r+(1./r)).*((1-x.^2).^-0.5);
num=2+(  x.*(r+(1./r)) );
dem=(r-(1./r)).*((1-x.^2).^0.5);
G=am.*EA(num./dem);
test=G;
test(G<0)=nan;
test(x==1)=test(x==0);
figure
contourf(log10(r),x,test,'LevelList', [-inf,0,1,2,3,4,5,inf]);
    h=colorbar; 
    set(get(h,'ylabel'),'string',' \gamma P_pL','FontSize',18)
    xlabel('$log_{10}(r)$','Interpreter','latex','FontSize',18)
    ylabel('$D/2\sqrt{M}$','Interpreter','latex','FontSize',18)
    set(gca,'fontsize',18)

    sigpm=1- (2./(r+(1./r)));
    DEm=1+((1-sigpm).*x);
    sig0=sigpm./DEm;

    figure
contourf(sigpm*100,sig0*100,test,'LevelList', [-inf,0,1,2,3,4,5,inf]);
    h=colorbar;
    set(get(h,'ylabel'),'string',' \gamma P_pL','FontSize',18)
    xlabel('$\sigma_\pm$','Interpreter','latex','FontSize',18)
    ylabel('$\sigma_0$','Interpreter','latex','FontSize',18)
    set(gca,'fontsize',18)
    xlim([0 20])

2 个答案:

答案 0 :(得分:0)

答案是添加以下内容:

v=[0:0.25:5];
figure
contourf(log10(r),x,test,'LevelList', v);

答案 1 :(得分:0)

Matlab默认使用具有64个离散级别的色彩映射。由于我们正在处理计算机,所以没有什么是真正连续的,但你可以通过增加级别数量来使它看起来像这样,直到它们与人眼无法区分。

正如@obchardon和@Ander在评论中所建议的那样,最好的方法是使用参数来调用colormap,使用的参数数量为for (i in 1:nrow(my.ds)) { key[i,] <- my.ds[i,c(1,2)] } key 。如果256不够高,你可以选择你想要的任何数字。在某些时候,您将遇到屏幕或打印机的极限。