How to make UIAXES invisible after imshow?

7 views (last 30 days)
I used imshow to display an image in an UIAXES object. After displaying the image, I would like to temporarily hide the axes and image. Setting the visibility of the uiaxis to off doesn't hide the uiaxis. The image is still visible, and I can still interact with the uiaxis. How do i make the uiaxis invisible? Is this a bug?
app.exAxes.Visible = 'off';
I am using 2018b update 2.

Accepted Answer

Walter Roberson
Walter Roberson on 2 Feb 2019
Not a bug.
Unlike all of the other objects I can think of at the moment, when you set an axes Visible to off, what you are controlling is the outside decorations such as the plot box, the tick marks, the title and labels, the grid -- but not any of the things drawn in the axes. There is no control at the axes level to say "make this axes and all of its contents invisible".
There are two work-arounds for standard axes:
  1. Put the axes inside a container object such as a uipanel. When you set the container visibility to off, the graph will disappear as well. This has the advantage that you can control everything about the labels etc. and the graphics at the same time; Or
  2. Create a hggroup inside the axes, and parent the graphics objects to the hggroup. When you set the hggroup visibility to off, the graphcis will disappear. This does not affect the labels etc. so if you want those invisible you would have to set the axes visibility off as well.

Sign in to comment.

More Answers (0)


Find more on Interactive Control and Callbacks in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!