Reduce the Gap between SUBPLOT (subaxes)
Posted 2013. 10. 18. 15:14매트랩에서 기본으로 제공하는 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 |
Reduce the Gap between SUBPLOT (subaxes) (3) | 2013.10.18 |
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 |
- Filed under : Enginius/Matlab
- 3 Comments 0 Trackbacks
mjeong
| 2014.08.28 01:12 | PERMALINK | EDIT | REPLY |해리님, 올려주신 프로그램 잘 쓰겠습니다. 아주 잘 작동되네요. 이것 때문에 좀 고생이었는데 잘 해결 했습니다. 감사합니다. 좋은 하루 보내세요.
SJ 해리s
| 2014.08.31 23:35 신고 | PERMALINK | EDIT |도움이 되었다니 다행이에요!
111
| 2015.01.02 23:45 | PERMALINK | EDIT | REPLY |이 코드 정말 물건이군요...