How do I make a figure full screen programmatically in MATLAB?

3,583 views (last 30 days)
I would like to make my figure "full screen" without using the mouse to maximize the figure window.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 30 Apr 2021
Edited: MathWorks Support Team on 28 Aug 2023 at 13:41
Starting in MATLAB R2018a, you can use the WindowState property to maximize, minimize, or display a figure in full-screen mode.
To make a figure the same size as your screen in previous releases, you may use this command:
figure('units','normalized','outerposition',[0 0 1 1])
 Please also see the related solution below for a method of programmatically maximizing, minimizing, and restoring a figure window.
MathWorks Support Team
MathWorks Support Team on 4 Nov 2020
Edited: MathWorks Support Team on 4 Nov 2020
Starting in MATLAB R2018a, you can use the "WindowState" property to maximize, minimize, or display a figure in full-screen mode. Please refer to the following documentation for more information:

Sign in to comment.

More Answers (6)

Antonio Javier Barragán Piña
set(gcf, 'Position', get(0, 'Screensize'));
Walter Roberson
Walter Roberson on 16 Jan 2020
You would put it in the code at the point at which you want to force the figure to full screen.
If you want to do it for a GUIDE GUI then you can put it in the *OpenFcn callback code.

Sign in to comment.

Dominik Mattioli
Dominik Mattioli on 20 Jun 2019
Edited: Dominik Mattioli on 20 Jun 2019
If you want to account for the taskbar (I found this in the comments of some other question):
fh = figure();
fh.WindowState = 'maximized';
Steven Lord
Steven Lord on 16 Jan 2020
If you're creating many figure objects in a loop and want them all to be maximized, you could set that property at creation.
fh = figure('WindowState', 'maximized')
Most if not all settable properties of Handle Graphics objects can be set this way, though sometimes (mainly for properties that interact like Units and Position) you may need to be careful about your input argument ordering.

Sign in to comment.

Bogdan Dzyubak
Bogdan Dzyubak on 16 Aug 2016
Edited: MathWorks Support Team on 24 Jun 2021
The proposed methods are simple but make the figure "nearly" full screen which can cause you to close the maximized Matlab session instead of the figure.
For actual maximize you can use the following:
frame_h = get(handle(gcf),'JavaFrame');
Rik on 17 Oct 2020
You can use some code that checks what solution is supported by the release. That way you can ensure the function keeps working for releases that only support one or the other. Like this.

Sign in to comment.

Steven Lord
Steven Lord on 26 Apr 2018
It is possible to do this as of release R2018a using the WindowState property of a figure object.

Jan on 26 Feb 2018
Under Windows you can use the API of the OS, see :
FigH = figure;
WindowAPI(FigH, 'full'); % fill the current monitor
WindowAPI(FigH, 'work'); % fill the current monitor without taskbar, if there is one
No window border anymore, just the inner position.

DGM on 31 Dec 2020
Similar to Jan's answer, it's possible to use system-level tools to maximize windows in Linux. That way, the behavior should be version-agnostic and will resize the window to the geometry that you'd expect if you just clicked the window maximize button manually.
In order to identify the window externally, simply give the figure window an unambiguous title. Then you can just use wmctrl to fetch the windowid and subsequently maximize the window.
pause(1) % wait for the window manager
system(sprintf('winid=$(wmctrl -lx | grep "%s" | cut -d \\ -f 1 | tail -n 1); wmctrl -ir "$winid" -b add,maximized_vert,maximized_horz',windowname))
Rik on 3 Jan 2021
There are plenty of submissions that sound like they have implemented some revolutionary idea, all while simply setting the Position to the screensize. Looking at the comments in Jan's submission I don't see anyone complaining that it only works on Windows. As long as your description clearly states this requirement, I don't see why it doesn't deserve a FEX page. The chance that it will be found by prospective users here is much smaller.
Do you have a way of programatically checking if wmctrl is working as expected? If so, you could even implement a check (along with isunix&&~ismac) and issue an error. In my humble opinion you shouldn't worry about people who don't bother to read the first two lines of your description.
If I ever decide to implement this, I will put a link to this answer in the comments of the code. If you ever do decide to post this to the FEX I can credit the FEX entry instead.

Sign in to comment.


Find more on 2-D and 3-D Plots 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!