MATLAB으로 작업한 결과를 그래프로 그리고 보고서에 첨부할 일이 생길때가 있습니다. 사실 MATLAB의 Figure는 그린 후에 각 종 속성을 모두 추가 할 수 있기 때문에 왠만한건 요즘 코드로 짜지 않을 수가 있지만... 한 가지.. 가로/세로 축(axis)을 가운데에서 그리고 싶을때는 난감할 수 있습니다. Python의 Matplotlib의 경우는 axis의 position 속성이 있던데 MATLAB은 없는듯... (혹은 제가 모를 수도ㅠㅠ)하여 살짝 찾아보니.. 저와 같은 질문이 matlabcentral에 많더군요. 여기 저기 뒤져서 보았더니 대부분 비슷한 솔루션을 제시하고 있길래 저도 여기저기 기웃거린 소스를 버무려서 살짝 테스트를 해보았습니다. 제가 만든것이 아니라 많은 코드를 참조했다는 것이지요.ㅠㅠ.
t = -pi : 0.001 : pi; y = sin(t); plot(t, y, 'LineWidth', 2.5) hold on X = get(gca, 'Xtick'); Y = get(gca, 'Ytick'); XL = get(gca, 'XtickLabel'); YL = get(gca, 'YtickLabel'); Xoff = diff(get(gca, 'XLim'))./50; Yoff = diff(get(gca, 'YLim'))./50; plot(get(gca, 'Xlim'), [0 0], 'k') plot([0 0], get(gca, 'YLim'), 'k') for i=1:length(X) plot([X(i) X(i)], [0 Yoff/2], '-k') end for i=1:length(X) plot([Xoff/2 0], [Y(i) Y(i)], '-k') end text(X, zeros(size(X))-2.*Yoff, XL); text(zeros(size(Y))-3.*Xoff, Y, YL); text(pi/4, sin(pi/4), '\leftarrow sin(pi/4)') hold off box off axis off set(gcf, 'color', 'w')
일단, 컨셉을 말씀드리면, 주어진 기본 축과 박스선을 지우고, 그냥 축을 내가 다시 다 그리겠다~~~라는 거죠.. 그걸 위해서 먼저 기본 plot에서 Xtick, XtickLabel, XLim을 X 축에서 확보를 해야합니다. Y축도 같은 값을 확보(get)합니다. 그리고 눈금도 그리고 라벨 숫자도 다시 입력하는 거죠... 아.. 그리고 마지막 부분에는 살짝 화살표 annotation을 쉽게 하는 방법하나를 찾아서 같이 넣었습니다.
그러면.. 위와 같은 그림이 나오는거죠...^^ 바탕도 흰색으로 해버려서 캡쳐뜨기도 편하도록 말이죠^^
반응형
'Software > MATLAB' 카테고리의 다른 글
문자 연산(symbolic)에서 유용하게 쓸 수 있는 해(solution) 구하는 solve 함수 사용하기 (6) | 2016.07.20 |
---|---|
MATLAB 2016a에 새로워진 대화형 작업에 유용할 것 같은 - 라이브 스크립트 - (4) | 2016.05.25 |
MATLAB EXPO 2016에서 본 MATLAB2016a (8) | 2016.04.30 |
MATLAB에서 벡터를 3D로 표현하는 quiver3와 화면 보기 각도를 조절하는 view 함수 익히기 (6) | 2015.11.23 |
MATLAB에서 벡터나 공간을 표현하고 연습하기 좋은 drawLA Toolbox (8) | 2015.09.16 |
칼만 필터를 이용하여 위치에서 속도 구하는 예제 - 김성필 저, 칼만필터의 이해 - (43) | 2015.08.20 |
간단히 MATLAB을 이용하여 체비세프 ChebyShev 저역통과 필터 구현해보기 (8) | 2015.06.19 |