
How to label axis appropriately in subplot
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi Guys,
I would like to just label the x axis in the lower row of subplots and delete the x labels in upper rows!
How can I do that?
Here is my code:
ha = tight_subplot(3,5,[.03 .0],[.1 .1],[.1 .1]);
for ii = 1:15
axes(ha(ii))
plot(randn(10,ii));
xlabel('Levels')
grid on
xlim([-1 11])
end
sgtitle('Plots')
% Just commend the axes i want:
set(ha(1:10),'XTickLabel','');
set(ha([2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15]),'YTickLabel','')
Code for Function tight_subplot:
function [ha, pos] = tight_subplot(Nh, Nw, gap, marg_h, marg_w)
% tight_subplot creates "subplot" axes with adjustable gaps and margins
%
% [ha, pos] = tight_subplot(Nh, Nw, gap, marg_h, marg_w)
%
% in: Nh number of axes in hight (vertical direction)
% Nw number of axes in width (horizontaldirection)
% gap gaps between the axes in normalized units (0...1)
% or [gap_h gap_w] for different gaps in height and width
% marg_h margins in height in normalized units (0...1)
% or [lower upper] for different lower and upper margins
% marg_w margins in width in normalized units (0...1)
% or [left right] for different left and right margins
%
% out: ha array of handles of the axes objects
% starting from upper left corner, going row-wise as in
% subplot
% pos positions of the axes objects
%
% Example: ha = tight_subplot(3,2,[.01 .03],[.1 .01],[.01 .01])
% for ii = 1:6; axes(ha(ii)); plot(randn(10,ii)); end
% set(ha(1:4),'XTickLabel',''); set(ha,'YTickLabel','')
% Pekka Kumpulainen 21.5.2012 @tut.fi
% Tampere University of Technology / Automation Science and Engineering
if nargin<3; gap = .02; end
if nargin<4 || isempty(marg_h); marg_h = .05; end
if nargin<5; marg_w = .05; end
if numel(gap)==1;
gap = [gap gap];
end
if numel(marg_w)==1;
marg_w = [marg_w marg_w];
end
if numel(marg_h)==1;
marg_h = [marg_h marg_h];
end
axh = (1-sum(marg_h)-(Nh-1)*gap(1))/Nh;
axw = (1-sum(marg_w)-(Nw-1)*gap(2))/Nw;
py = 1-marg_h(2)-axh;
% ha = zeros(Nh*Nw,1);
ii = 0;
for ih = 1:Nh
px = marg_w(1);
for ix = 1:Nw
ii = ii+1;
ha(ii) = axes('Units','normalized', ...
'Position',[px py axw axh], ...
'XTickLabel','', ...
'YTickLabel','');
px = px+axw+gap(2);
end
py = py-axh-gap(1);
end
if nargout > 1
pos = get(ha,'Position');
end
ha = ha(:);
0 Kommentare
Antworten (1)
Simon Chan
am 19 Aug. 2021
Just tell it to output x-label when the number of subplot > 10
x=1:8;
for k = 1:15
data = rand(1,8);
subplot(3,5,k)
plot(x,data)
if k >10
xlabel('X-label')
end
end

Siehe auch
Kategorien
Find more on Axis Labels in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!