0

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

[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])
4

2 回答 2

0

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

正如@obchardon 和@Ander 在评论中所建议的那样,最好的方法是调用 colormap 并带有要使用的级别数的参数:colormap(parula(256))。如果 256 不够高,你可以选择任何你想要的数字。在某些时候,您会遇到屏幕或打印机的限制。

于 2016-11-25T08:54:00.647 回答
0

答案是添加以下内容:

v=[0:0.25:5];
figure
contourf(log10(r),x,test,'LevelList', v);
于 2016-10-24T09:11:09.420 回答