How to make only x-axis invisible (y-axis stays visible)?
Mostra commenti meno recenti
I have two axes (top, bottom) in a GUI. I do not want the x-axis of the top ghraph to be present (because it is the same as the bottom x-axis). I could not find how to handle separately the x and y axis visibility.
Csaba
Risposte (11)
Wayne King
il 23 Mag 2013
without seeing your code, a simple way is just to set the 'xtick' property to []
plot(randn(100,1));
set(gca,'xtick',[])
3 Commenti
Csaba
il 23 Mag 2013
Wayne King
il 23 Mag 2013
Does this get closer?
subplot(211)
plot(randn(100,1))
set(gca,'xtick',[]);
set(gca,'xcolor',[1 1 1])
subplot(212)
plot(randn(100,1))
Csaba
il 24 Mag 2013
Muhammad Shah
il 17 Dic 2018
This Question is posted in 2013, but still last week got more than a thousand views, and I also needed this info, and I got very helpful information in this post, but surprizingly later I got an other solution in Matlab documentation and that was not yet here, and it is probably the smalest code, and I tested it and it worked nice, so I decided to addd it, here it is:
axis off ;
And thats it your axes are gone.
2 Commenti
Csaba
il 20 Dic 2018
Luca Nagel
il 8 Lug 2021
Dear Muhammad, thank you this was really helpful!
Johann Riemensberger
il 27 Ott 2016
7 voti
Hi, axes('Color','none','XColor','none');
works for me Bests Johann
2 Commenti
Katherine Latimer
il 20 Nov 2016
Wow after all that...thanks Johann!
Csaba
il 25 Dic 2018
Jorge Mariscal Harana
il 5 Lug 2017
Modificato: Walter Roberson
il 27 Mag 2023
Hi,
Try:
ax1.YAxis.Visible = 'off'; % remove y-axis
ax1.XAxis.Visible = 'off'; % remove x-axis
Hope that helps, J
3 Commenti
Walter Roberson
il 12 Set 2017
Note: this uses syntax and properties available from R2014b, and so cannot could not have been used in the 2013 time-frame the question was originally asked for.
Ankit Labh
il 27 Mag 2023
How about removing only one y axis (say right side) and not both?
Thanks
Florens Helfferich
il 27 Nov 2023
@Ankit Labh ax1.Box = false;
This removes both the top and right side axes, but not the left and bottom axes.
Kyle Henderson
il 3 Dic 2017
4 voti
xticks([])
Rini Varghese
il 9 Ott 2018
Modificato: Rini Varghese
il 14 Apr 2022
Try the following:
h = gca;
h.XAxis.Visible = 'off';
2 Commenti
Cg Gc
il 14 Feb 2019
This works great. Thank you.
Abdul Basith Ashraf
il 11 Nov 2019
This is better
If I set
set(gca,'xtick',[])
the grid will also vanish.
But with your code, the grid stays . Thanks
John Barber
il 24 Mag 2013
This solution might be overkill, but you can get that effect with my File Exchange program 'oaxes', available here: http://www.mathworks.com/matlabcentral/fileexchange/30018. The following will show only a y axis at the left edge of the plot:
oa = oaxes;
oa.XAxisLine = 'off';
oa.XLabel = '';
oa.YLabel = '';
oa.Arrow = 'off';
oa.Origin = [-Inf -Inf 0];
% If you want the normal y label to be visible:
ylabel('my y axis...')
set(get(gca,'YLabel'),'visible','on')
This should get you close to what you are looking for. The oaxes documentation will give you more information about the properties used in the example above, including an explanation of the difference between the oaxes 'YLabel' property which is set to empty above, and the parent axes' 'YLabel' text object. The main difference in appearance I am getting is that the oaxes ticks are bidirectional (they extend out on both sides from the axes line), while a normal axes has ticks that only extend to one side. Currently, there is no way to change this in oaxes, but I might add it in a future release.
-John
1 Commento
Csaba
il 27 Mag 2013
h = axes;
plot(h,rand(10,1));
pos = get(h,'Position');
new_h = axes('Position',pos);
linkaxes([h new_h],'y');
pos(3) = eps; %Edited here
set(new_h,'Position',pos,'XTick',[],'XTickLabel',[]);
set(h,'Visible','off');
Chintan
il 17 Mag 2014
0 voti
Turn Box off, it usually works.
Martin
il 24 Mar 2016
0 voti
I solved something similar that way:
set(axis_h,'XColor',axis_h.Parent.Color);
-Martin
This wasn't an option when the question was originally asked, but now you can change the Visible property of the appropriate ruler object that is part of the axes. Compare the axes without the ruler being changed:
ax = axes;
plot(ax, 1:10);
with one that does have the ruler turned off.
figure
ax2 = axes;
plot(ax2, 1:10);
% Get the ruler for the X axis
x = ax2.XAxis;
% Make it invisible
x.Visible = 'off';
1 Commento
Simon
il 4 Apr 2025
That still doesn't answer the original question. The question was, could he remove the top axis only and keep the bottom axis. No one has answered this successfully
Categorie
Scopri di più su Graphics Object Properties in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

