Changing subplot axis label using subplot handle

665 views (last 30 days)
I have a figure with 2 subplots, and I'd like to set the axis labels. I have assigned the handles P1 and P2 to the two subplots, e.g.
P1 = subplot(2,1,1);
P2 = subplot(2,1,2);
After plotting my data, I can do things like:
set(P1, 'YLim', [0 2])
but when I try changing the xlabel,
set(P1, 'Xlabel', 'This is the X label')
I get an error:
??? Error using ==> set Value must be a handle
I've tried changing case 'xlabel' and a few other things, but the documentation wasn't any help. Any ideas?

Accepted Answer

Geoff on 16 Apr 2012
That's because the value for 'XLabel' is actually a handle to another object. To see its properties, do this:
get( get(P1,'XLabel') );
Now, there's a property in there called 'String'. You should do this:
set( get(P1,'XLabel'), 'String', 'This is the X label' );
  1 Comment
Earl on 16 Apr 2012
Thank you! I might have spent hours trying to work this out.

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 16 Apr 2012
Earl, there is a function called xlabel() and it takes a handle.
xlabel(P1, 'This is the X Label');
I believe this is the preferred, simpler way. If you set it right after you call subplot, then you don't even need to pass in the axes
xlabel('X axis #1', 'FontSize', 20);
xlabel('X axis #2', 'FontSize', 14);

Nguyen Thien An
Nguyen Thien An on 23 Dec 2019
This syntax work with me:
ax = subplot (2,2,1)
ax.XLabel.String = 'This is your label';

Community Treasure Hunt

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

Start Hunting!

Translated by