2015-01-23 4 views
1

스케일링과 pcolor 틱 다음 코드를 거의 정확하게 내가 (MATLAB R2010a)를마이너 로그 - 로그

[x,y] = meshgrid(logspace(-1,1,5),logspace(0,7,5)); 

pcolor(x,y,x.*y); shading interp; 
set(gca, 'XScale', 'log', 'YScale', 'log'); 
set(gca,'YMinorTick','on'); 
set(gca,'Layer','top'); 

그것은 격자 선이 표시되지 않는 플롯을 만들어 원하는,하지만하지 둘 다 전공 및 부전공 눈금이 보입니다. 나는 (I 해상도를 증가 할 때)

[x,y] = meshgrid(logspace(-1,1,10),logspace(0,7,10)); 

에 의해 첫 선을 대체 할 때, 갑자기 작은 눈금은 dissappear를 표시합니다. 그런 다음 대용량 데이터 세트의 pcolor 플롯에서 로그 스케일 된 작은 눈금을 어떻게 사용할 수 있습니까?

답변

2

Matlab은 작은 눈금과 눈금을 제어하지 않습니다. 당신은 그들의 가시성을 켜거나 끌 수 있습니다. (이미 당신이 이미 겪었던 한계로) 그러나 그 값/위치/수 등을 설정할 수는 없습니다 ...

그 길은 모든 눈금과 눈금을 완전히 끄는 것입니다. 축 (pcolor 플롯이있는)을 선택한 다음 정의한 그리드 속성을 사용하여 그 위에 투명한 빈 axes을 만듭니다.

이 빈 axes에 플롯 또는 다른 그래픽 개체가 없으므로 Matlab은 설정 한 속성과 관련하여 훨씬 더 효율적으로 작동합니다 (스마트하지 않고 백그라운드에서 일부 항목 변경). 일부 속성은 단순히 기본 axes에서 복사하고, 다른이 (YMinorTickYMinorGrid 등)을 명시 적으로 설정되어 있는지

[x,y] = meshgrid(logspace(-1,1,10),logspace(0,7,10)); 
pcolor(x,y,x.*y); shading interp; 
colormap(flipud(gray(64))) %// just so the grid lines are more visible 

axbot = gca ;    %// retrieve the handle of the current axis 
set(axbot, 'XScale', 'log', 'YScale', 'log'); 
axis off     %// remove all ticks/grid etc... 

%// now create the "overlay" axes, which replicate some of the properties of the underlying axis (position/limits etc ...) 
axtop = axes('Position',get(axbot,'Position'),'Color','none',... 
      'Xlim',get(axbot,'XLim'), 'Ylim',get(axbot,'YLim'),... 
      'XScale', 'log', 'YScale', 'log' , ... 
      'YMinorTick','on' , 'YMinorGrid','off') ; 

참고 :

그래서 귀하의 경우에, 이러한 라인을 따라 뭔가 될 것입니다.

이 의지 플롯 : logticks

당신은 Y 작은 그리드뿐만 아니라 보여 단지 onYMinorGrid을 변경하려면 .


오른쪽에 Y 틱 표시가 필요하면 똑같은 작업을 반복하면됩니다 (거의). 다른 축을 추가하십시오. 이번에는 XAxisLocationTopYAxisLocationright으로 지정하십시오.

axtopright = axes('Position',get(axbot,'Position'),'Color','none',... 
      'Xlim',get(axbot,'XLim'), 'Ylim',get(axbot,'YLim'),... 
      'XScale', 'log', 'YScale', 'log' , ... 
      'YMinorTick','on' , 'YMinorGrid','off' , ... 
      'XAxisLocation', 'Top','YAxisLocation','right') ; 
+0

호키. 한 가지 질문 : 그래프의 네 측면 모두에 눈금을 매길 수 있습니까? – Doubt

+1

@Doubt, 대답을 편집했습니다. 편집 참조) – Hoki