Figure visibility changes upon axes call

16 次查看(过去 30 天)
Hi,
I have the following issue: I would like to create figures and keep them invisible. However when changing the current axis withhin my figures the visibility changes. Here is a small example showing what I mean:
f = figure('visible','off');
ax = axes;
set(ax,'Position',[0 0 1 1]);
axis manual
axis off
ax2 = axes;
plot(1:2,1:2);
axes(ax);
the last call to reset the current axes to the old axes object makes the whole figure become visible. I can reset this by resetting the visible property. But there will still be a short fraction of time, when the figure becomes visible, something I would like to avoid.
Anyone got an idea what could be causing this and how it could be avoided?
  1 个评论
Stephen23
Stephen23 2014-9-18
编辑:Stephen23 2014-9-18
The behavior of figure, axes, plot, etc, is usually much more predictable if you use:
  • the optional handle input, and
  • specify the data and options using Property+Value pairs.
It takes a bit more writing (and learning), but it tends to remove most of these (perhaps unwanted) higher-level behaviors. For example in your code, simply replace
ax = axes;
set(ax,'Position',[0 0 1 1]);
with
ax = axes('Position',[0 0 1 1]);
Also note that plot creates its own axes, if need be.

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2014-9-18
According to the axes help, the syntax axes(h) "makes existing axes h the current axes and brings the figure containing it into focus". I guess "into focus" includes being visible...
The help gives this example " to make an axes the current axes without changing the state of the parent figure", instead of
axes(axes_handle)
you should use
set(figure_handle,'CurrentAxes',axes_handle)

更多回答(1 个)

Adam
Adam 2014-9-18
axes(ax) brings the figure containing the axes into focus so I guess that includes making it visible too.
Why do you need to call
axes(ax)
though? I used to do that a lot, but now I tend to avoid ever doing it because I don't like having the focus changed in that way.
If you want to plot on a specific axes you can just use:
plot( ax, ... )

类别

Help CenterFile Exchange 中查找有关 Graphics Object Properties 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by