매트랩 함수 정리
내가 보려고 정리하는 실제 업무에서 많이 사용하는 매트랩 함수 정리글
matplolib은 MATLAB에서 따왔다
파이썬으로 데이터 분석과 시각화 한번이라도 해본 사람이라면 써봤을 라이브러리,
matplotlib은 -이름의mat에서 알 수 있지만- MATLAB의 시각화 형태를 많이 빌려왔다. (함수명이 거의 똑같다)
그만큼 MATLAB은 시각화에서 강력한 기능을 제공하는데, 사용자가 손쉽게 시각화를 할 수 있도록 여러 함수를 제공하고 시각화 형태를 객체화하여 시각화 시 자유로운 컨트롤이 가능하다.
많은 시각화 함수 중 실제 업무에서 많이 사용중인 함수들과 사용법, 예시를 정리했다.
모든 예시 그림은 공식 문서와 MATLAB 커뮤니티인 matlabcentral에서 가져왔다.
유의사항 : Matlab Statistics and Machine Learning Toolbox에 있는 함수가 포함되어 툴박스가 없는 경우 함수가 구동되지 않을 수 있음
그래프의 기본 형태를 생성하는 함수
- 가장 기본적인 line, dot plot 지정 함수
- 기본 형태 :
plot(x, y, LineSpec)- x와 y를 어떻게 넣어주냐에 따라 line graph, dot graph, xline, yline, one point plot 등 다양한 형태로 응용이 가능한 함수
- plot 공식 문서
- output 예시
- 히스토그램 생성 함수
- 기본 형태 :
histogram(x)- bin 수와 bin 경계를 설정 가능
- ※주의사항 :
nbins와edges는 한 코드에 같이 쓰지 않음- histogram 공식 문서
- output 예시
- 히스토그램과 확률 밀도 함수를 같이 시각화하는 함수
- 기본 형태 :
histfit(data)- 디폴트 분포 : 정규 분포
- kernel 분포 피팅 히스토그램 :
histfit(data, nbins,'kernel')- histfit 공식 문서
- output 예시
- boxplot 생성 함수
- 기본 형태 :
boxplot(x)- 그룹화 변수 지정시 그룹별로 boxplot 생성 가능
(boxplotGroup이 사용이 더 편해서 이 함수를 더 많이 사용함)- Notch, line option 등 여러 plotting 옵션이 있음
- outlier 모양, 상자 모양도 설정 가능
- percentile을 다르게 하고 싶은 경우
plot+errorbar+patch를 쓰면 구현 가능- boxplot 공식 문서
- output 예시
- 그룹별 boxplot 생성 함수
- 기본 형태 :
boxplotGroup(x)- 업무에서 많이 사용하는 형태 :
boxplotGroup(ax, y, 'Widths', widths, 'PrimaryLabels', LabelName)- 그룹별 color 지정 가능, input data를
1xn cell array of mx1 vectors형태로 넣어주면 그룹별로 plotting을 해줌histcount,patch,plot을 동시에 사용하면 그룹별 평균과 분포 시각화가 모두 가능함- ※주의사항 : 애드온 함수이므로 MATLAB에서 애드온에서 함수를 검색하여 설치해준 뒤 사용해야 함수 이용 가능
- boxplotGroup 공식 문서
- boxplot과 히스토그램 동시에 plotting하기
- output 예시
- 2차원 산점도 plotting 함수
- 기본 형태 :
scatter(x,y)- 속성에서 마커 형태, 크기, 색, 투명도 지정 가능
- scatter 공식 문서
- output 예시
- 그룹별 산점도를 plotting하는 함수
- 기본 형태 :
gscatter(x,y,g)- g로 그룹화되는 x와 y 산점도 플롯 생성
- x와 y의 크기는 동일해야함
- g의 값은 x와 y에 모두 대응되어야 함 => g, x, y의 크기는 동일함
- 그룹별 컬러는 사용자가 지정 가능
- gscatter 공식 문서
- output 예시
- 산점도와 단변량 히스토그램 생성 함수
- 기본 형태 :
scatterhist(x,y)- 히스토그램의 형태를 막대가 아닌 확률분포로 설정 가능 (확률 분포는 지원되는 확률 분포에서 설정 가능)
- marginal chart를 히스토그램이 아닌 상자 플롯으로 변경 가능
- 이변량 데이터 분석시 유용한 시각화가 가능함
scatter,histfit,fitdist,boxplot만큼의 커스터마이징은 어려우나 기본적인 산점도와 히스토그램 옵션 설정이 가능함- scatterhist 공식 문서
- output 예시
- 막대 그래프 생성 함수
- 기본 형태 :
bar(y)
-bar(x,y): x 위치별 막대 그래프 생성- style 옵션 -
'grouped': 각 그룹을 x 값을 중심으로 인접해 있는 막대로 표시 /'stacked': 각 그룹별 누적 막대 표시- bar 공식 문서
- output 예시
- 파레토 차트 생성 함수
파레토 차트는 내림차순으로 정렬된 막대로 구성된 막대 차트이며 누적 분포를 표시하는 선을 포함한 차트- 기본 형태 :
pareto(y)- bar plot과 누적 분포를 동시에 그려줌
pareto(y,x): 막대의 x 좌표(또는 레이블)를 지정- 항상 데이터의 내림차순으로 정렬하여 플롯팅되므로 다른 순서의 정렬로 시각화를 원한다면
bar + plot방식으로 구현할 수 있음- pareto 공식 문서
- output 예시
- 데이터를 로그 스케일로 plotting하는 함수
- 기본 형태 :
loglog(x,y)- x축과 y축에 밑이 10인 로그 스케일을 사용하여 x 좌표와 y 좌표를 플로팅
- 밑 값 변경 가능
- loglog 공식 문서
- output 예시
- plotting 중첩 / 중첩 해제 함수
;을 붙이지 않아도 됨hold on: 좌표축에 플롯이 새로 추가될 때 기존 플롯이 삭제되지 않도록 현재 좌표축의 플롯을 유지hold off: 유지 상태를 꺼짐으로 설정하여, 좌표축에 플롯이 새로 추가될 경우 기존 플롯을 지우고 모든 axes 속성을 재설정hold(ax,___): 현재 좌표축 대신 ax로 지정된 좌표축의 유지 상태를 설정- 사용법 예시
plot(x, y1) hold on plot(x, y2) hold off
- hold 공식 문서
- output 예시
그래프를 생성한 뒤 그래프의 세부 속성을 조정하는 함수
- 그래프에 지정한 제목을 설정하는 함수
- 기본 형태 :
title(titletext)- 업무에서 많이 사용하는 형태 :
title('titleText', 'FontSize', 15, 'FontWeight', 'bold')- 변수 값, LaTex 문법 등 텍스트 값 입력이 자유로움
- title 공식 문서
- output 예시
- x축과 y축 레이블을 지정하는 함수
- 기본 형태:
xlabel(txt)ylabel(txt)- title과 마찬가지로 텍스트 속성 지정 가능, 객체화 가능
- xlabel 공식 문서 / ylabel 공식 문서
- x축, y축 상한, 하한값을 설정하는 함수
- 기본 형태 :
xlim([xmin xmax])/ylim([ymin ymax])- 자동 축 제한, 수동 축 제한 설정 가능
- xlim 공식 문서 / ylim 공식 문서
- 좌표축의 눈금값을 설정하는 함수
- 기본 형태 :
xticks(ticks)/yticks(ticks)- 눈금값 제거 :
xticks([])/yticks([])- 눈금값 자동, 수동 설정 가능
- tick의 형태는 증가하는 벡터 형태로 지정해야함
- ※주의사항 : 눈금값을 상수로 지정하는 것이 아닌 벡터를 생성하여 눈금값으로 넣을 때에는 '[ ]'가 아닌 xticks(N:N:N) 형태로 넣어줘야 에러가 나지 않음
- xticks 공식 문서 / yticks 공식 문서
- 눈금값의 레이블을 지정하는 함수
- 기본 형태 :
xticklabels(labels)/yticklabels(labels)- string 형태로 레이블을 넣고싶은 경우 cell type으로 label을 지정해주어야 함
- ex)
xticklabels({'x = 0','x = 5','x = 10'})- double 벡터 형태로 레이블을 넣고싶은 경우 '[ ]' 가 아닌 xticklabels()에 그대로 벡터를 생성해주어야 함
- ex)
xticks(0:pi:6*pi)- 자동, 수동 설정 가능
- xticklabels 공식 문서 / yticklabels 공식 문서
- 그래프의 범례 위치 조정, 범례 레이블 설정, 범례 지정하지 않음 등 범례와 관련된 설정을 조정하는 함수
- 기본 형태 :
legend(labels)- 플로팅된 각 데이터 계열에 대한 설명 레이블을 포함한 범례 생성
legend('show'): 범례 나타내기legend('off'): 범례 삭제legend('Location','northwest'): 범례 위치 설정- 범례로 보여주는 값과 일부 데이터의 범례만 보여주기 설정 가능
- 시각화 함수에
('HandleVisibility', 'off')옵션을 같이 사용하면 쉬운 활용 가능- legend 공식 문서
- output 예시
- 서브플롯들의 총괄 제목을 생성하는 함수
- 기본 형태 :
sgtitle(txt)- ※ 주의사항 : R2018b부터 사용 가능
title에서 사용하는 텍스트 속성 모두 이용 가능- sgtitle 공식 문서
- output 예시
- 지정된 수에 맞는 색을 생성하는 함수
lines(m): m개 색으로 구성된 line 컬러맵 반환
hsv(m): m개 색으로 구성된 hsv 컬러맵 반환
- 개인적으로 hsv 색보다 lines 색이 눈이 편해서 lines를 더 많이 이용중
- lines 공식 문서
- hsv 공식 문서
- lines 예시
- hsv 예시
- 그래프 축에 대한 동기화
- 기본 형태 :
linkaxes(ax)- 지정된 좌표축 벡터에 대한 제한을 동기화
- subplot, 이중축 등 여러 형태에서 응용 가능
- 사용 예시 :
linkaxes([ax1 ax2 ax3],'xy')- linkaxes 공식 문서
- output 예시
- 그래프 이중축 생성
- 기본 형태 :
yyaxis left/yyaxis rightyyaxis left:왼쪽 y축과 연결된 현재 좌표축의 측면(ax)을 활성화yyaxis right: 오른쪽 y축에 연결된 현재 좌표축의 측면(ax)을 활성화- 각 좌표축에 대한 대부분 옵션에 대한 커스터마이징 가능
- yyaxis 공식 문서
- output 예시
- 보조 시각화로 기능하는 함수
- 그래프에 텍스트를 추가하는 함수
- 기본 형태 :
text(x, y, txt)- txt로 지정된 텍스트를 사용하여 현재 좌표축에서 하나 이상의 데이터 점에 텍스트 설명을 추가
- 텍스트 서식 옵션 설정으로 커스터마이징 가능
- 텍스트 input으로 변수값, 변수명 표현 가능 (string 형으로 변환 필수)
- latex 서식 사용 가능
- x, y 값으로 상수가 아닌 수식이나 파라미터 입력이 가능하여 그래프 생성 자동화에 유용함
- 업무 사용 예시 :
txt = ['mean : ' num2str(round(mean(data),2)) newline ... 'sd : ' num2str(round(std(data),2))]; text(x1, y1, txt, 'FontSize', 10)
- text 공식 문서
- output 예시
- 다각형의 패치를 생성하는 함수
- 기본 형태 :
patch(X,Y,C)- plot과 다르게 line 형태가 아닌 덩어리진 형태를 시각화함
- 면, 꼭짓점, 선의 색, 투명도, 모양 등 옵션 설정 가능
- patch 공식 문서
- output 예시
- 상수 값을 갖는 세로선 / 가로선을 생성하는 함수
- 기본 형태 :
xline(x)/yline(y)- plot과 마찬가지로 선에 대한 옵션 설정 가능
- line에 대한 레이블 설정, 레이블 위치 조정 가능
- xline 공식 문서 / yline 공식 문서
- output 예시
- 오차 막대가 표시된 line plot 생성 함수
- 기본 형태 :
errorbar(y,err)errorbar(x,y,yneg,ypos,xneg,xpos): 평균 ± 1 표준편차를 표현할 때 유용함- errorbar 공식 문서
- output 예시
- 그래프에 그리드를 추가해주는 함수
- 기본 형태 :
grid ongrid minor: 보조 그리드 추가- 업무에서 많이 사용하는 형태 :
grid on; grid minor;- grid 공식 문서
- output 예시
- 선형 회귀 모형을 피팅하고 데이터 산점도, 피팅된 회귀 적합선과 신뢰 구간을 생성하는 함수
- 기본 형태
mdl = fitlm(tbl,'Y ~ X1 + X2'); %fitlm([x1, x2], y) 형태도 가능 plot(mdl)
- 함수에서 자동으로 회귀식에 절편을 포함하므로 절편 추정을 위해 데이터 핸들링을 하지 않아도 됨
- NaN 값을 제외하므로 결측치를 크게 신경쓰지 않을 수 있음
h = plot(mdl);: 회귀모형 적합 결과 plotting을 객체화하면 데이터 포인트, 적합한 회귀선, 신뢰구간에 대한 옵션 커스터마이징 가능- plotting 시에는 절편을 포함하지 않음
- fitlm 공식 문서 /선형회귀적합 plot 공식 문서
- output 예시
그래프를 생성하는 plot 형태를 생성하는 함수
figure 창과 플롯 좌표축을 지정하는 함수
*MATLAB은 타 분석 프로그램과 다르게 figure라는 창을 생성하여 그래프를 보여주고, figure 창에서 GUI로 그래프 속성 조정이 가능하다.
- 새 Figure 창을 생성하는 함수
- 기본 형태 :
figure- Figure 창의 크기, 위치, 축 설정 가능
- 업무에서 많이 사용하는 코드 :
figure(); set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0, 1, 1]);- figure 공식 문서
- 타일 형식으로 Figure 창을 나누어 좌표축을 생성하는 함수
- 기본 형태 :
subplot(m, n, p)- 현재 Figure를 m×n 그리드로 나누고, p로 지정된 위치에 좌표축 생성
- 반복문 인덱스 등 여러 방법으로 커스터마이징 가능 → matrix plot 처럼 한 창에 여러 그래프 생성 가능
- subplot 공식 문서
- output 예시
- 타일 형식 차트 레이아웃 생성 함수. subplot과 유사
- 기본 형태 :
tiledlayout(m,n); nexttilesubplot에 비해 타일 간격, 위치, 크기, 차트 추가와 설정이 자유로운 것이 특징- ui 객체도 타일의 input으로 가져오기 가능
- tiledlayout 공식 문서
- output 예시