imshow border tight for subplot
조회 수: 8 (최근 30일)
이전 댓글 표시
i can hide the grey border around the figure with setting;
iptsetpref('ImshowBorder','tight');
figure;Image = rand(1000,1000);
imshow(Image,[]), colormap jet;
How can i do the same if i am using subplot! iptsetpref doesnot seem to have any effect in subplot.
iptsetpref('ImshowBorder','tight');
figure;
subplot(1,2,1)
imshow(Image,[]), colormap jet;
subplot(1,2,2)
imshow(Image,[]), colormap jet;
채택된 답변
Sean de Wolski
2012년 2월 10일
Use subplott to generate axes handles for each individual subplot
h = subplott(3,3);
imshow('cameraman.tif','parent',h(6));
imshow('pout.tif','parent',h(2));
Note, the images will not be tight in both dimensions unless the figure is turned into the correct shape manually and all images are the same shape.
E.g.:
set(gcf,'units','pix')
set(gcf,'position',[200 200 800 800])
With the figure from above. Where subplott.m is:
function [hA] = subplott(nr,nc)
%function to return a figure handle and axes handles for tight subplots
%
%Inputs:
% r: number of rows
% c: number of columns
%
%Outputs:
% hA: axes handles to subplots (styled order, i.e. rows first then columns)
%
%See Also: subplot imshow
%
%Error Checking:
assert(nargin==2,'2 inputs expected');
assert(isscalar(nr)&&isscalar(nc));
%Other Constants:
rspan = 1./nr; %row span normalized units
cspan = 1./nc; %not the tv channel
na = nr*nc; %num axes
%Engine
rlow = flipud(cumsum(rspan(ones(nr,1)))-rspan); %lower edge
clow = cumsum(cspan(ones(nc,1)))-cspan;
[rg cg] = meshgrid(1:nr,1:nc); %grids
hA = zeros(na,1);
figure;
for ii = 1:na
pos = [clow(cg(ii)) rlow(rg(ii)) cspan rspan]; %positions
hA(ii) = axes('units','norm','outerposition',pos,'position',pos); %build axes
end
end
추가 답변 (1개)
Sean de Wolski
2012년 2월 10일
Instead of using subplot, build the axes directly:
figure('units','pixels','position',[200 200 800 400]); 5fig
axes('units','norm','outerposition',[0 0 0.5 1],'position',[0 0 0.5 1]) %left axes
imshow(rand(100),[])
axes('units','norm','outerposition',[0.5 0 0.5 1],'position',[0.5 0 0.5 1]) %right axes
imshow(imread('cameraman.tif'),[])
댓글 수: 2
Sean de Wolski
2012년 2월 10일
Sure! In fact that sounds like a good idea for a game of code golf! I'll get back to you on this later this afternoon.
참고 항목
카테고리
Help Center 및 File Exchange에서 Graphics Object Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!