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

2 views (last 30 days)
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
time = [0 1 2 3 4 5];
value = [-3 -1 4 1 2 5];
xlabel('time'), ylabel('value')
set(gca,'ylim',[-5 5])
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?

Accepted Answer

Scott MacKenzie
Scott MacKenzie on 27 Feb 2022
Edited: Scott MacKenzie on 27 Feb 2022
You don't need to set the x-axis location. Delete that line and then use yline to get a line at y = 0:
time = [0 1 2 3 4 5];
value = [-3 -1 4 1 2 5];
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]);
Omar Mian
Omar Mian on 6 Mar 2022
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)




Community Treasure Hunt

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

Start Hunting!

Translated by