Automatically apply x and y labels to subplots only along the edges.
Updated 11 Jul 2012

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

function H=labelEdgeSubPlots(xl,yl,onlyBottom)

If all subplots have the same quantities on the x and y axes then
there's no point labeling all of them. Often it looks neater to
simply have y labels only on the plots along the left hand
edge and x labels only on the plots along the bottom. This
function does this automatically for the current figure.

xl - a string specifying what to label the x axes.
yl - a string specifying what to label the y axes.
onlyBottom - by default this is zero and the function adds an
x-axis to appropriate plots from the penultimate row
if the bottom row of plots is incomplete. set
onlyBottom to 1 to suppress this behaviour.
* in addition: onlyBottom can be a vector of axis handles to
be processsed.
H - a structure containing handles to the x and y axis labels

for i=1:5
x=[0:10]; y=1+0.01*x.^3+randn(size(x))*0.2;
plot(x,y,'ok'), xlabel('will be removed')

H=labelEdgeSubPlots('beer [pints]','faux pas');
H=labelEdgeSubPlots('beer [pints]','faux pas',1);
%One can also do:

%proccess only some subplots
for i=1:25
subplot(5,5,i), box on
if mod(i,5)==1, ax=[gca,ax]; end

Rob Campbell - January 2009

Cite As

Rob Campbell (2024). labelEdgeSubPlots (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

And another correction to the help...

Fixed error in one of the exampled.

Add H1 line

Returns label handles.
3rd input can now also be a vector of axis handles to be labeled.

Now skips axes which are Matlab-generated legends or colorbars. Please let me know if it gets confused by other figure child elements.