2016-10-24 7 views
0

두 개의 윤곽 플롯을 표시하는이 아름다운 코드가 있습니다. 색상 막대의 모든 색상을 이산 방식 대신 연속 방식으로 표시 할 수 있는지 궁금합니다. 여기에 아래의 코드이며, 감사 :컬러 막대의 모든 색상을 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이 더 큰 nubmer를 사용하여 색상 표를 제안하고 호출하지만 ** pleaseeeeee **는 'jet'을 사용하지 않고 parula와 같은 것을 사용하거나 다른 색상 표를 사용합니다. –

답변

0

대답은 다음과 같은 추가하는 것입니다 :

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

matlab에 기본적으로 64 개 이산 수준의 컬러 맵을 사용합니다. 우리가 컴퓨터를 다루고 있기 때문에 진실로 계속 될 것은 없지만 인간의 눈과 구별 할 수 없을 때까지 레벨의 수를 늘리면 그렇게 할 수 있습니다.

@obchardon과 @Ander가 주석에서 제안한 것처럼, 이것을 수행하는 가장 좋은 방법은 사용할 레벨 수에 대한 인자 인 colorhead를 호출하는 것입니다 : colormap(parula(256)). 256이 충분히 높지 않으면 원하는 번호를 선택할 수 있습니다. 어떤 시점에서 화면이나 프린터의 한계를 뛰어 넘을 것입니다.