How to make only x-axis invisible (y-axis stays visible)?

1.051 visualizaciones (últimos 30 días)
Csaba
Csaba el 23 de Mayo de 2013
Respondida: Steven Lord el 27 de Nov. de 2023
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

Respuestas (11)

Muhammad Shah
Muhammad Shah el 17 de Dic. de 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 comentarios
Csaba
Csaba el 20 de Dic. de 2018
Dear Muhammad,
First, this solution was already published (see above).
Second, in 2013 this command did not exist.
Luca Nagel
Luca Nagel el 8 de Jul. de 2021
Dear Muhammad, thank you this was really helpful!

Iniciar sesión para comentar.


Wayne King
Wayne King el 23 de Mayo de 2013
without seeing your code, a simple way is just to set the 'xtick' property to []
plot(randn(100,1));
set(gca,'xtick',[])
  3 comentarios
Wayne King
Wayne King el 23 de Mayo de 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
Csaba el 24 de Mayo de 2013
Sorry, no. It makes the axis white but I have a picture behind the graph. So white axis (and actually any colors) are visible in my case. I do not want the x-axis at all.
Csaba

Iniciar sesión para comentar.


Johann Riemensberger
Johann Riemensberger el 27 de Oct. de 2016
Hi, axes('Color','none','XColor','none');
works for me Bests Johann
  2 comentarios
Katherine Latimer
Katherine Latimer el 20 de Nov. de 2016
Wow after all that...thanks Johann!
Csaba
Csaba el 25 de Dic. de 2018
It does not work on the Matlab 2013. So I cannot accept this answer.

Iniciar sesión para comentar.


Jorge Mariscal Harana
Jorge Mariscal Harana el 5 de Jul. de 2017
Editada: Walter Roberson el 27 de Mayo de 2023
Hi,
Try:
ax1.YAxis.Visible = 'off'; % remove y-axis
ax1.XAxis.Visible = 'off'; % remove x-axis
Hope that helps, J
  3 comentarios
Ankit Labh
Ankit Labh el 27 de Mayo de 2023
How about removing only one y axis (say right side) and not both?
Thanks
Florens Helfferich
Florens Helfferich el 27 de Nov. de 2023
@Ankit Labh ax1.Box = false;
This removes both the top and right side axes, but not the left and bottom axes.

Iniciar sesión para comentar.


Kyle Henderson
Kyle Henderson el 3 de Dic. de 2017
xticks([])

Rini Varghese
Rini Varghese el 9 de Oct. de 2018
Editada: Rini Varghese el 14 de Abr. de 2022
Try the following:
h = gca;
h.XAxis.Visible = 'off';
  2 comentarios
Cg Gc
Cg Gc el 14 de Feb. de 2019
This works great. Thank you.
Abdul Basith Ashraf
Abdul Basith Ashraf el 11 de Nov. de 2019
This is better
If I set
set(gca,'xtick',[])
the grid will also vanish.
But with your code, the grid stays . Thanks

Iniciar sesión para comentar.


John Barber
John Barber el 24 de Mayo de 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

José-Luis
José-Luis el 24 de Mayo de 2013
Editada: José-Luis el 24 de Mayo de 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');
  4 comentarios
Csaba
Csaba el 27 de Mayo de 2013
Yes, it works, although it is a workaround and not a solution.
Jan
Jan el 24 de Nov. de 2017
[EDITED, moved from flag] andreas jensen wrote:
Overly complicated and doesn't work

Iniciar sesión para comentar.


Chintan
Chintan el 17 de Mayo de 2014
Turn Box off, it usually works.

Martin
Martin el 24 de Mzo. de 2016
I solved something similar that way:
set(axis_h,'XColor',axis_h.Parent.Color);
-Martin

Steven Lord
Steven Lord el 27 de Nov. de 2023
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';

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by