2012-02-22 3 views
3

gridxy function을 사용합니다 (원래 그리드를 제대로 수정할 수 없기 때문에). 매우 잘 작동합니다.백그라운드에서 플롯 그리드

figure(1); clf; 
x = [0:0.1:10]; 
y = sin(x*pi/2).* x; 
xtemp = [x(1) ; x(:) ; x(end)] ; 
ytemp = [0 ; y(:) ; 0 ] ; 
% plot 
hplot = fill(xtemp,ytemp, 'b'); 
set(hplot, 'FaceColor' , [0.5, 0.5, 0.75]) 
set(hplot, 'EdgeColor' , [0, 0, 0.25]) 

hgrid = gridxy(get(gca,'XTick'),get(gca,'YTick'),'Color',[0.6 0.6 0.6],'Linestyle','--', 'LineWidth', 0.6);  

print(gcf, '-r400', ['test' '.png'], '-dpng'); 

이 보낸 이미지에서 볼 수 있듯이 :

enter image description here

+1

'uistack (hgrid, 'bottom')'이 문제를 해결해야한다. (사실'gridxy'는 uistack을 호출한다.) 그러나 그렇지 않다. 나에게 벌레 같아. – Jonas

+0

FWIW, 버그 리포트를 제출했습니다. – Jonas

답변

1

내가없는

그러나이 예에서 그리드 내 보낸 PNG에서 전경에 그려진

완전한 설명이지만 적어도 작동하는 해결책. 모든

첫째, opengl 또는 zbuffer에 그림의 RenderMode 속성을 설정하면 인쇄 한 (상단 그리드)와 같은 화면 모양의 이미지를 만드는 것, 그리고 painters로 설정하면 격자 배경으로 돌아갈 수 있습니다. print의 도움에서 :

렌더러에 대한 참고 사항 : 그림을 인쇄 할 때, MATLAB 항상 화면에 같은 렌더러를 사용하지 않습니다. 이것은 효율성을위한 것입니다. 그러나 은 인쇄 된 결과물이 화면 표현과 정확히 일치하지 않는 경우입니다. 이러한 경우에 -zbuffer 또는 -opengl을 지정하면 화면을 에뮬레이트하는 출력이 더 많이 제공됩니다.

그러나, 가능한 렌더러, 즉 painters, zbuffer, 또는 opengl의 각을 사용하려고 시도하는 다소 다른 결과를 제공하지만, 위에 그리드의 모든 :

% Problem still exists in all 3 options: 
print(gcf, '-r100', ['test1' '.png'], '-dpng','-painters'); 
print(gcf, '-r100', ['test1' '.png'], '-dpng','-zbuffer'); 
print(gcf, '-r100', ['test1' '.png'], '-dpng','-opengl'); 

줄에 중단 점을 퍼팅 142 파일에서 toolbox\matlab\graphics\private\render.m을 입력 한 다음 -painters 옵션을 사용하여 print을 호출하면 hardcopy에 전달 된 세 번째 입력이 -dzbuffer임을 알 수 있습니다. 당신이 -dpainters로 변경하는 경우 : 다음

inputargs{3}='-dpainters' % while in breakpoint 

과 계속 F5 충돌, 생성 된 이미지의 격자 배경에 간다.