File Exchange

image thumbnail

subplotplus() - Enhanced layout MATLAB subplot function

version (3.83 KB) by Alon Geva
subplotplus() is an enhanced alternative to the inherit subplot() function of MATLAB.


Updated 18 Jan 2012

View Version History

View License

[subplot_handles,LabelsFontSize] = subplotplus(subplot_array,varargin) is an enhanced alternative to the inherit subplot() function of MATLAB. Using subplotplus() almost any layout of subplots can be created in a particular figure.
The desired subplot layout is described using a complex cell array where each "atomic" cell, within the cell array, corresponds to a subplot. The function scans the content of the input cell array and builds the desired matching subplot layout in the figure. The size, alignment and font size of the subplots is automatically adjusted for best appearance.
The function is recursive in nature so any level of subplot divisions can be created. The returned arguments are the created subplot handles as well as the optimal label (X and Y) font size that should be used for a specific subplot for best appearance.

Input arguments:
+ subplot_array: A cell array that describes the desired subplot layput. For example, a 1x2 subplot layout where the right-end subplot is further divided down to a column of 3 additional subplots is described by the following cell expression: {{[]},{{[]};{[]};{[]}}}.
A group of subplot cells, sharing the same "parent" cell, can be glued together in order to save figure space using the '-g' option string at the cell's content (instead of empty group []). For example, if the 3 columned subplots of the previous example are to be glued together, sharing the same X-axis, the follwing cell expression should be used:
+ varargin: only used for function recursion and should not be used by the user.

Output arguments:
+ subplot_handles: A list of the created subplot handles by their order of appearnace in the figure, starting from the left-top corner in a clockwise manner.
+ LabelsFontSize: A matching list of X/Y-axis optimal labels size for further user work on the subplots.

Alon Geva
$Revision: 1.00 $ $Date: 12/01/2012 18:52:53 $

Cite As

Alon Geva (2021). subplotplus() - Enhanced layout MATLAB subplot function (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (7)

bj j

very nice

Pratik Bhatt

When I try this as an command lines in my script:
C = {{{{[]},{[]}};{{{[]},{[]}};{{{[]},{[]}};{{{[]},{[]}}}
[h,labelfontsize] = subplotplus(C)
It is giving me an error "The expression to the left of the equals sign is not a valid target for an assignment."
Any comments???

Adam Danz

Helene Kolding

Very nice

I want to place seven graphs vertically, and only have the middle five glued together. This can be done, but it "unlocks" the x-axis for these five graphs, so it does not line up with the other.

I've used
And variations thereof.



Jerry Gregoire

Would like to see it able to pass parameters pairs to subplots,
For Example: {{'-g' 'XGrid' 'off'}}

You can use repmat to simplify the structure generation,
(ie) Plot3Vert = repmat({{'-g'}},3,1);
will produce 3 subplots 'glued' on top or each other. That's nice.

Otherwise good for producing pretty complex figures.

Syntax reminds me of Lisp.



MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Tags Add Tags

Inspired: subtightplot

Community Treasure Hunt

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

Start Hunting!