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

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

답변 (11개)

Wayne King
Wayne King 2013년 5월 23일
without seeing your code, a simple way is just to set the 'xtick' property to []
plot(randn(100,1));
set(gca,'xtick',[])

댓글 수: 3

Thanks.
It is almost good. I still have the axis itself (ticks and labels have disappeared).
Csaba
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))
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

댓글을 달려면 로그인하십시오.

Muhammad Shah
Muhammad Shah 2018년 12월 17일
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

Dear Muhammad,
First, this solution was already published (see above).
Second, in 2013 this command did not exist.
Dear Muhammad, thank you this was really helpful!

댓글을 달려면 로그인하십시오.

Johann Riemensberger
Johann Riemensberger 2016년 10월 27일

7 개 추천

Hi, axes('Color','none','XColor','none');
works for me Bests Johann

댓글 수: 2

Wow after all that...thanks Johann!
It does not work on the Matlab 2013. So I cannot accept this answer.

댓글을 달려면 로그인하십시오.

Jorge Mariscal Harana
Jorge Mariscal Harana 2017년 7월 5일
편집: Walter Roberson 2023년 5월 27일
Hi,
Try:
ax1.YAxis.Visible = 'off'; % remove y-axis
ax1.XAxis.Visible = 'off'; % remove x-axis
Hope that helps, J

댓글 수: 3

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.
How about removing only one y axis (say right side) and not both?
Thanks
@Ankit Labh ax1.Box = false;
This removes both the top and right side axes, but not the left and bottom axes.

댓글을 달려면 로그인하십시오.

Rini Varghese
Rini Varghese 2018년 10월 9일
편집: Rini Varghese 2022년 4월 14일
Try the following:
h = gca;
h.XAxis.Visible = 'off';

댓글 수: 2

This works great. Thank you.
This is better
If I set
set(gca,'xtick',[])
the grid will also vanish.
But with your code, the grid stays . Thanks

댓글을 달려면 로그인하십시오.

John Barber
John Barber 2013년 5월 24일
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 2013년 5월 24일
편집: José-Luis 2013년 5월 24일
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

Thanks. I tried a similar code before (making the line width zero). Running your code I get the following error:
************************************************************
Error using set
Width and height must be > 0
Error in prrrr_1 (line 8)
set(new_h,'Position',pos,'XTick',[],'XTickLabel',[]);
********************************************************
So the pos(3)=0; command makes the width zero which MATLAB does not accepts.
Csaba
My bad, please see the edited code where the width is made very small instead of zero. This would be sort of a kludge.
Yes, it works, although it is a workaround and not a solution.
Jan
Jan 2017년 11월 24일
[EDITED, moved from flag] andreas jensen wrote:
Overly complicated and doesn't work

댓글을 달려면 로그인하십시오.

Chintan
Chintan 2014년 5월 17일

0 개 추천

Turn Box off, it usually works.
Martin
Martin 2016년 3월 24일

0 개 추천

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

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

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Graphics Object Properties에 대해 자세히 알아보기

질문:

2013년 5월 23일

댓글:

2025년 4월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by