MATLAB Answers

How to make all but one axis visible on plot

2 views (last 30 days)
Eileen Lukens
Eileen Lukens on 9 Jun 2021
Edited: Adam Danz on 14 Jun 2021
I want to make my plot with both Y axes visible, the bottom X axes visibile, but have the top X-axis invisible. I know you can set the 'XColor' to 'none' and both the top and bottom axes will become invisible. How do I make it so everything but the top axes is visible? Included below is what I would like to achieve. I'm doing this in a subplotting routine so I'm hoping to avoid anything that is hardcoded such as a white rectangle positioned to hide the top axis. Thanks!

Accepted Answer

Adam Danz
Adam Danz on 10 Jun 2021
Edited: Adam Danz on 14 Jun 2021
There might be an undocumented method I'm not familiar with (for example, see BoxFrame) but another simple way is to use yyaxis to create two y axes but you'll ignore the right-side axes.
Also see this answer to turn off the right axis while keeping visible the other 3 axes.
clf
ax = axes;
yyaxis(ax,'right')
ax.YColor = ax.XColor;
ax.YTickLabels = '';
yyaxis(ax,'left') % * see footnote [1]
ax.YColor = ax.XColor;
linkprop([ax.YAxis(1), ax.YAxis(2)],{'Limits','TickValues'}); % * see footnote [2]
box(ax,'off') % see footnote [3]
[1] It's important the you run yyaxis(ax,'left') after making changes to the right-side so that your plotting is all assigned to the left axes.
[2] This line links the y limits and ticks for the 2 y axes; otherwise you could remove the tick on the right using ax.YTick = [];
[3] You may need to call this line again after plotting or hold your axes using hold(ax,'on')

More Answers (0)

Community Treasure Hunt

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

Start Hunting!