매트랩에서 기본으로 제공하는 subplot은 유용하긴 하지만 여백이 너무 많이 남는다는 단점이 있다. 여백을 약간 줄일 수 있지만, 그래도 만족스럽지 않다. 그래서 한번 구현해봤다.
아래 결과에서 알 수 있듯이 subaxes의 여백이 훨씬 적은 것을 알 수 있다.
0.Comparison
1. demoSubaxes.m
%% subaxes 함수의 효용성을 확인해본다.
clc;
clear all;
close all;
%% 1. matlab에서 지원하는 subplot으로 그린 것
fig1 = figure(1);
set(fig1, 'Position', [100 100 700 800]);
for i = 1:4
subplot(2, 2, i);
title(sprintf('subplot %d', i));
end
%% 2. 내가 만든 subaxes로 그린 것
fig2 = figure(2);
set(fig2, 'Position', [900 100 700 800]);
margin = 0.08;
for i = 1:4
subaxes(fig2, 2, 2, i, margin);
title(sprintf('subaxes %d', i));
end
2. subaxes.m (function)
function subaxes(figHandler, h, w, index, margin)
% subplot과 같지만, margin을 내가 조절할 수 있다는 장점이 있다.
%
% figHandler : Figure handler
% h : 전체 subfigure의 height
% w : 전체 subfigure의 width
% index : subfigure의 inded
% (margin) : margin
%
if nargin == 4
margin = 0.05;
end
w_idx = rem(index, w);
if w_idx == 0, w_idx = w; end;
w_idx = w_idx - 1;
h_idx = ceil(index/w) - 1;
h_idx = h - h_idx - 1;
w_unit = 1/w;
h_unit = 1/h;
x_start = w_unit*(w_idx) + margin/4;
y_start = h_unit*(h_idx) + margin/2;
x_len = w_unit-margin/2;
y_len = h_unit-margin;
axes('Parent', figHandler ...
, 'Position' ...
, [x_start, y_start, x_len, y_len] );
'Enginius > Matlab' 카테고리의 다른 글
figure에서 동영상 저장하기 (2) | 2014.01.14 |
---|---|
Simple Loop Indicator (0) | 2013.11.24 |
Get width and height automatically for SUBPLOT (get_wh4subplot) (0) | 2013.09.29 |
Split structured TXT files (strsplit) (0) | 2013.09.29 |
Use Thread in Matlab by mex-compile C code (0) | 2013.09.29 |