Code covered by the BSD License  

Highlights from
Create and activate figures by name

5.0 | 4 ratings Rate this file 29 Downloads (last 30 days) File Size: 2.92 KB File ID: #18220 Version: 1.3
image thumbnail

Create and activate figures by name


Brett Shoelson (view profile)


04 Jan 2008 (Updated )

Finds and activates, or creates, figure with user-specified name.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

| Watch this File

File Information

Finds and activates, or creates, figure with user-specified name.
If no name is provided, creates figure named "untitledn" (where n is incremented to result in a unique name).
togglefig('My Figure');
If figure named 'My Figure' exists, it will be activated (brought to the front and shown). Otherwise, it will be created.
h = togglefig('My Figure');
     Also returns the handle to the specified or created figure.
     Creates and activates new figure named untitled1, untitled2, ...
     Note: You can subsequently activate these figures with, for instance, togglefig('untitled1').
NOTE: This example requires the Image Processing Toolbox
im = imread('cameraman.tif');
for ii = 1:10
     thresh = ii/20;
     title(sprintf('Threshold = %0.2f',thresh));
    I've found this to be exceptionally useful in algorith-development
    mode, particularly when iterating on cells in the cell-mode editor. (I
    use this function in almost every mfile I write these days.)

MATLAB release MATLAB 7.5 (R2007b)
MATLAB Search Path
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (9)
26 Dec 2013 ftsst tupamahu

oh my god thanks before cz very helpful :)

04 Apr 2013 Owen Brimijoin

Owen Brimijoin (view profile)

Only just found this function this morning - but it made my day.

26 Jun 2009 Brett Shoelson

Brett Shoelson (view profile)

Danilo, thanks for finding the bug (and for suggesting a fix). New version addresses this!

Comment only
23 Jun 2009 daniloz

Great idea and nice implementation !!!! I've just downloaded and I'm already loving it... :-)

Just a small bug found, when called without any arguments, I get:

>> togglefig
??? Input argument "clearfig" is undefined.

The problem is solved by adding the line

clearfig = 0;

just before

elseif nargin == 1


17 Oct 2008 victor de lafuente

Thanks for this useful function.

I suggest a couple of extra lines to generate a unique figure number, so that other *.m files still using figure(1), figure(2), etc. do not overwrite the figures created by togglefig. It will pause for 10 ms each time a new figure is created, but this can be modified according to your computer platform (see 'pause' help).

if isempty(fig)
FigNum = round(sum(1000*clock));
fig = figure(FigNum);

Comment only
10 Jan 2008 John D'Errico

All fixed.

Comment only
10 Jan 2008 Brett Shoelson

ALL: To further follow up on John's comment, note that John correctly pointed out (via private email) that suppressing the handle if nargout == 0 does not disallow the reference-by-name functionality I wanted. I'm reposting the file to implement the modest change he suggested.

Comment only
10 Jan 2008 Brett Shoelson

Thanks for the comment, John. My first thought was to implement your suggestion; it would be trivially easy. But on reflection, I like TOGGLEFIG's forced issuance of a handle. In my workflow, I do things like:


This gives me painless (by-name) handling of my figures, and frees me from having to use the more unwieldy


You can still do

togglefig Fred;

(With the semicolon to suppress the display of the handle.)

Alternatively, I leave it to the user to modify the function to delete the function handle if not requested as an output.


Comment only
04 Jan 2008 John D'Errico

Its excellent, as I fully expect from Brett.

I don't know if this is being picky or not, but I'd add a couple of lines to the very end.

if nargout==0
clear fig

I think this is the standard for functions like plot or figure. When called as a command or with no output arguments, they do not try to return an output. Thus I'd expect to be able to do

togglefig Fred

and have a figure named "Fred" created, but without the handle itself ever returned. You should only get a handle when you ask for it. As it is now, togglefig now returns

= 1

when I call it as a command.

I'll rate this a 5 anyway.

06 Jan 2009 1.1

I added a new (optional) input argument that triggers a CLF (clear-figure) command.

26 Jun 2009 1.2

Fixes a bug when togglefig is called with no input arguments. Thanks to Danilo for pointing it out!

08 Jan 2015 1.3

R2014b ready.

Contact us