매트랩과 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에서 까지 간격으로 나눈 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로 보내주거나 숫자만 넣으면 그 숫자 간격으로 마커를 그려준다.
'프로그래밍 Programming > 매트랩 MATLAB' 카테고리의 다른 글
[MATLAB] plot 함수에서 투명도(transparency) 조절하기 (0) | 2022.11.05 |
---|---|
[MATLAB] 여러 개의 그래프 색상 중복 안되게 지정하기 (0) | 2022.10.25 |
[MATLAB] classic plot의 color 순서로 설정하기 (0) | 2022.09.26 |
[MATLAB] 시작할 때 자동 실행되는 코드 (startup.m) (0) | 2022.09.05 |
[MATLAB] Legend를 사용할 때 유용한 팁 (1) 일부 legend만 표기 (0) | 2022.06.28 |