Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[MATLAB] plot 그릴 때 마커 간격 설정하기 (230309 수정) 본문

프로그래밍 Programming/매트랩 MATLAB

[MATLAB] plot 그릴 때 마커 간격 설정하기 (230309 수정)

보통의공대생 2022. 10. 9. 14:13

 

매트랩과 matplotlib에서 둘 다 그래프를 그려보았고 사실 matplotlib이 MATLAB을 무료로 사용하고자 하는 목적에서 나왔기 때문에 기능이 비슷한 점이 많다.

 

그럼에도 불구하고 내가 발견한 차이점이 하나 있는데, 그것은 매트랩에서는 plot의 마커 간격을 설정할 수 없다는 점이다.

 

matplotlib에서는 다음과 같이 코드를 작성하면 5개 간격으로 marker를 그려준다.

plot(x,y,marker='o',markevery=5)

 

그런데 MATLAB에서는 아무리 검색해도 이러한 기능이 없었다.

그래서 임시방편으로 만든 방법을 여기에 기록하고자 한다.

 

 

MATLAB에서는 plot을 그릴 때 마음과 같이 할 수 있다.

x = 0:pi/16:2*pi ;
y = sin(x) ;

figure ;
plot(x(1:2:end), y(1:2:end)) ;

 

위 코드를 보면 x(1:2:end)라고 되어있는데 이는

첫번째 줄인 x = 0:pi/16:2*pi 와 동일한 것이다.

 

x = 0:pi/16:2*pi

이 코드는 0에서 $2\pi$까지 $\pi/16$ 간격으로 나눈 array를 return하려는 것이다.

 

 

 

만약 전체 plot을 그리는 코드를 작성하면 다음과 같다. 이 코드는 동그라미 마커를 사용하면서 solid line까지 같이 plot한다.

figure ;
plot( x, y, '-o', 'color', 'b' ) ;

 

이렇게 간격이 촘촘한 것을 보기 싫다면 앞서 말한 것과 같이 간격을 조정하여 두 plot을 같이 그리는 것이다.

 

figure ;
plot( x, y, 'b' ) ;
hold on ; plot( x(1:3:end), y(1:3:end), 'o', 'color', 'b' ) ;

 

 

여기서 plot 색상을 같게 해주지 않고 hold on을 하면 다른 plot으로 인식하기 때문에 색상을 다르게 배치한다.

 

따라서 색상을 따로 지정해주어야 한다.

 

다소 불편해보일 수 있는 방식이지만 MATLAB에서 마커 간격을 조절할 수 있게 해주기 전까지는 이 방법이 나아보인다.

검색해본 결과 이런 기능을 위해 코드를 만든 사람도 있는데 이렇게 마커 간격 조절을 함수로 만들어버리면 그 함수를 만든 사람이 아닌 이상에야 자신이 자유자재로 plot을 그리는 데에 방해가 된다.

 


230309 수정

 

예전에는 marker 간격 설정 기능이 없었던 것으로 기억하는데 최근에 다시 검색하다가 알게 되어서 작성한다.

 

이제는

 

plot(x,y,"-o","MarkerIndices",[1 5 10])
plot(x,y,"-x","MarkerIndices",1:3:length(y))
plot(x,y,"Marker","square","MarkerIndices",5)

"MarkerIndices"라는 옵션이 추가되어서 마커 간격을 array로 보내주거나 숫자만 넣으면 그 숫자 간격으로 마커를 그려준다.

Comments