How to use separate locations for axis location and axis labels?

Hello,
I'd like to create a 2D plot where the x-axis axis is locatatd at y = 0 but the labels stay at the bottom of the plot rather than close to the axis (relevant when y-axis lower limit is less than zero). I want to achieve something like this (produced in Excel):
In Matlab I can place the x-axis at y=0 using the 'XAxisLocation' property
figure
time = [0 1 2 3 4 5];
value = [-3 -1 4 1 2 5];
plot(time,value)
xlabel('time'), ylabel('value')
set(gca,'ylim',[-5 5])
set(gca,'XAxisLocation','origin')
But this also moves the x-axis labels to the middle of the plot.
Is there a way to keep the x-axis labels at the bottom?
Thanks

 Accepted Answer

You don't need to set the x-axis location. Delete that line and then use yline to get a line at y = 0:
figure
time = [0 1 2 3 4 5];
value = [-3 -1 4 1 2 5];
plot(time,value);
xlabel('time'), ylabel('value')
set(gca,'ylim',[-5 5])
yline(0); % add line at y=0
% add tick marks
ax = gca;
x = ax.XTick;
for i=1:numel(x)
line([x(i) x(i)],[0.1 -0.1], 'color', [.4 .4 .4]);
end

3 Comments

Thanks. That's actually what I've been doing previously. But what I'd prefer is to have axis tick marks on the y = 0 line (hence moving the axis itself).
They're a bit faint but there are tick marks on line at y = 0 in the image in the first post.
OK, yes, I see the ticks now. I just added some code to draw tick marks.
Thank you. I was hoping there might be an axis property that I had overlooked, but I can use this as a workaround.

Sign in to comment.

More Answers (0)

Products

Release

R2021b

Community Treasure Hunt

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

Start Hunting!