File Exchange

image thumbnail


version (2.35 KB) by Rob Campbell
Automatically apply x and y labels to subplots only along the edges.

1 Download

Updated 11 Jul 2012

View Version History

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 (2021). labelEdgeSubPlots (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (12)

Jack Williams


Rob: Very nice, thanks. Paul

Hsuan-Chao Chiu

Ya, the problem is my data is pairwise interaction so need to do xlabel and ylabel with 'A', 'B', 'C' respectively.

pie chart need to turn axis on to show xlabel, but it will also show axis line.

set 'Xtick' to [] removes the tick, but it still preserves the black axis line.

set 'XColor' into 'w' makes line invisible, but will also make the xlabel into white.

just wanna share my current finding.

And very useful code
rate it now :)

Rob Campbell

I hadn't thought of pie charts since they don't have x and y axes. I think pie charts might require a more customised solution.

Hsuan-Chao Chiu

Dear Rob,

This is excellent, but how do I make it work on pie chart?



Great function! thanks

Yuri K

Nice function. Thanks!


thank you very much!!!!

Rob Campbell



yes, I mean different rows should have different y labels. I have two rows and six columns.The top row has the name of "wall", the bottom row has the name of "center."
I like that "wall" and "center" appear only in the first colunma (ylabel).

if i<12 && mod(i,2)==1
L2 = ['h = ' num2str(-B) ' m'];
L3 = ['m = ' num2str(a1,3)];
elseif i>=12 && mod(i,2)==0
L3 = ['m = ' num2str(a1,3)];

Best regards,

Rob Campbell

Top and bottom of what? Do you mean different rows should have different y labels? If so, that is beyond the scope of this function because different people will have different requirements. However, I the function returns the handles to the x and y labels. It would be trivial for you to use those handles to further modify your sub-plots as desired. I think this is the "correct" way to do things.


Dear Rob

how would be the case: ylabel different in top and bottom in the subplot??

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!