subplots
Statistics + Visualization 중심의 Octave 학습 예제
course/basic/subplots.m
함수 시그니처
function axes = subplots(varargin) 전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
function axes = subplots(varargin)
% subplots - 다중 서브플롯을 생성하는 함수
%
% 지원:
% Octave
%
% 입력:
% varargin - 서브플롯의 행(nrows)과 열(ncols) 개수 및 기타 figure 및 axes 설정을 위한 파라미터 리스트
% nrows - 서브플롯의 행 개수 (기본값: 1)
% ncols - 서브플롯의 열 개수 (기본값: 1)
% varargin - figure 및 axes 설정을 위한 추가적인 파라미터들 (기본값: {})
%
% 출력:
% axes - 생성된 서브플롯의 axes 핸들 (nrows x ncols 크기 행렬)
%
% 설명:
% - 서브플롯을 행 우선 순서(C 스타일)로 배치합니다.
% - nrows와 ncols가 생략되면 기본값(1)으로 설정됩니다.
% - varargin을 통해 figure와 axes의 추가적인 속성을 설정할 수 있습니다.
%
% 사용 예시:
% axes = subplots(); % 기본값 1x1 서브플롯 생성
% axes = subplots(2, 3); % 2x3 서브플롯 생성
% axes = subplots(2, 3, {'XGrid', 'on'}); % X축 격자 활성화 설정
% 입력 인자가 1개 이하인 경우 기본값 설정
if nargin <= 1
nrows = 1;
ncols = 1;
elseif nargin >= 2
% 첫 번째와 두 번째 인자는 nrows와 ncols로 할당
nrows = varargin{1};
ncols = varargin{2};
varargin([1, 2]) = [];
end
% varargin에서 첫 번째 인자가 셀 배열인 경우 처리
if length(varargin) == 1 && iscell(varargin{1})
varargin = varargin{1};
end
% 기본 figure 및 axes 설정 파라미터
% fltk에서는 poloar() 축이 지원되지 않음
% Xlabel, Ylabel, Zlabel 사용하면 polar() 축이 qt에서도 지원되지 않음
% NextPlot, add 사용하면 polar() 축이 qt에서도 지원되지 않음
param_a = {
# "NextPlot", "add", ... # constraint to xyz
# "XGrid", "on", "YGrid", "on", "ZGrid", "on", ...
# "Xlabel", "x", "Ylabel", "y", "Zlabel", "z", ... # constraint to xyz
# "FontSize", 12, ...
};
% 사용자 지정 인자와 병합
param_a = merge_params(param_a, varargin);
% 서브플롯 axes 핸들을 저장할 행렬 초기화
axes = zeros(nrows, ncols);
% 서브플롯 생성 및 axes 핸들 저장
for j = 1:ncols
for i = 1:nrows
ax = subplot(nrows, ncols, ncols * (i - 1) + j, param_a{:});
axes(i, j) = ax;
end
end
end 코드 해설
목적
Statistics + Visualization 중심의 Octave 학습 예제
입력
- 파라미터: varargin
출력
- 반환값: axes
- 그래프/figure 출력
실행 흐름
- subplots - 다중 서브플롯을 생성하는 함수
- 입력
- 출력
- axes = subplots(); % 기본값 1x1 서브플롯 생성
- axes = subplots(2, 3); % 2x3 서브플롯 생성
- axes = subplots(2, 3, {'XGrid', 'on'}); % X축 격자 활성화 설정
- 입력 인자가 1개 이하인 경우 기본값 설정
- NextPlot, add 사용하면 polar() 축이 qt에서도 지원되지 않음
- "NextPlot", "add", ... # constraint to xyz
- 서브플롯 axes 핸들을 저장할 행렬 초기화
핵심 함수/주제
polaraxesiscelllengthmerge_paramspoloarsubplotvarargin
실습 과제
- 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
- 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.
- 핵심 함수 polar의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
학습 팁
- 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
같은 카테고리의 다른 코드
- colored
course/basic/colored.m - demo-00
course/basic/demo-00.m - demo-01
course/basic/demo-01.m - demo-02
course/basic/demo-02.m - demo-03a
course/basic/demo-03a.m - demo-03b
course/basic/demo-03b.m - demo-04
course/basic/demo-04.m - demo-05
course/basic/demo-05.m - demo-06
course/basic/demo-06.m - demo-07
course/basic/demo-07.m