2016-10-24 10 views
0

私は2つの等高線プロットを表示するこの美しいコードを持っています。私はカラーバーのすべての色を離散的な方法ではなく連続的に表示できるかどうか疑問に思っていましたか?ここでは以下のコードであり、あなたに感謝:カラーバーのすべての色を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]) 
+0

'colormap(jet(256)) – obchardon

+0

エラーメッセージが表示されます:'未定義の関数または変数 'EA'.'、実行可能コードを投稿してください。投稿に画像を追加することもできます。 – Rotem

+1

もっと色が必要な場合は、@ obchardonが提案するように、より大きなヌブマーでカラーマップを呼び出すようにしてください。** pleaseeeeee **は 'jet'を使わず、parulaのようなものを使うか、または他のより良いカラーマップを使用します。 –

答えて

0

答えは次のように追加することです:

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

MATLABは、デフォルトでは64の離散レベルとカラーマップを使用しています。私たちはコンピュータを扱っているので、真に継続するものはありませんが、人間の目に見分けがつかないようにレベル数を増やすことで、そうすることができます。

@obchardonと@Anderのコメントで示唆されているように、これを行う最も良い方法は、使用するレベル数の引数でカラーマップを呼び出すことです:colormap(parula(256))。 256が十分に高くない場合は、任意の数を選択できます。ある時点では、画面やプリンタの限界に遭遇します。

関連する問題