Get from Ico-github-logo

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Subplot position calculator

  • functionTemplate(input_args)
    FUNCTIONTEMPLATE Summary of this function goes on this H1 line
  • iosr.acoustics.irStats(fi...
    IRSTATS Calculate RT, DRR, Cte, and EDT for impulse response file
  • iosr.acoustics.rtEst(abs_...
    RTEST Estimate reverberation time based on room size and absorption
  • iosr.auditory.azimuth2itd...
    AZIMUTH2ITD Convert azimuth in degrees to ITD
  • iosr.auditory.binSearch(S...
    Conduct a binary search
  • iosr.auditory.calcIld(L,R...
    CALCILD Calculate normalised interaural level difference
  • iosr.auditory.chXcorr(hc_...
    CHXCORR Calculate cross-correlograms with a wide range of options.
  • iosr.auditory.chXcorr2(hc...
    CHXCORR2 Calculate cross-correlograms with a range of options.
  • iosr.auditory.createWindo...
    Create a Hann or exp. window with specified onsets/offsets
  • iosr.auditory.dupWeight(f)
    DUP_WEIGHT Calculate duplex weighting coefficients for ITD and ILD
  • iosr.auditory.erbRate2hz(x)
    ERBRATE2HZ Convert ERB rate to Hz.
  • iosr.auditory.freqMulti(f)
    FREQMULTI Calculate frequency coefficient for ITD-azimuth warping
  • iosr.auditory.gammatoneFa...
    GAMMATONEFAST Produce an array of responses from gammatone filters via FFT
  • iosr.auditory.hz2erbRate(x)
    HZ2ERBRATE Convert Hz to ERB rate
  • iosr.auditory.instItd(l,r...
    INSTITD Calculate instantaneous ITD
  • iosr.auditory.iso226(phon...
    ISO226 ISO 226:2003 Normal equal-loudness-level contours
  • iosr.auditory.itd2azimuth...
    ITD2AZIMUTH Convert ITD to azimuth
  • iosr.auditory.lindemannIn...
    LINDEMANNINH Signal pre-processing for Lindemann's cross-correlation
  • iosr.auditory.loudWeight(...
    LOUDWEIGHT Calculate loudness weighting coefficients based on ISO 226
  • iosr.auditory.makeErbCFs(...
    MAKEERBCFS Make a series of center frequencies equally spaced in ERB-rate.
  • iosr.auditory.meddisHairC...
    Calculate Ray Meddis' hair cell model for a number of channels.
  • iosr.auditory.perceptualC...
    PERCEPTUALCENTROID Perceptual spectral centroid
  • iosr.auditory.xcorrLindem...
    XCORRLINDEMANN Cross-correlation based on Lindemann's precedence model
  • iosr.bss.applyIdealMasks(...
    APPLYIDEALMASKS Calculate and apply ideal masks via STFT
  • iosr.bss.applyMask(s,m,nf...
    APPLYMASK Apply a time-frequency mask to an STFT
  • iosr.bss.calcImr(m,im)
    CALCIMR Calculates the Ideal Mask Ratio (IMR)
  • iosr.bss.calcSnr(output,t...
    CALCSNR Calculate the separation SNR
  • iosr.bss.cfs2fcs(cfs,fs)
    CFS2FCS Calculate gammatone crossover frequencies.
  • iosr.bss.generateMixtures...
    GENERATEMIXTURES Generate arrays of mixtures from targets and interferers.
  • iosr.bss.getFullMask(m,fr...
    GETFULLMASK Convert frame rate mask to a sample-by-sample mask
  • iosr.bss.idealMasks(st,si...
    IDEALMASKS Calculate ideal time-frequency masks from STFTs
  • iosr.bss.resynthesise(x,f...
    RESYNTHESISE Resynthesise a target from a time-frequency mask
  • iosr.dsp.autocorr(x,Q,dim)
    AUTOCORR Perform autocorrelation via FFT
  • iosr.dsp.convFft(a,b,shape)
    CONVFFT Convolve two vectors using FFT multiplication
  • iosr.dsp.istft(s,nfft,hop...
    ISTFT Calculate the Inverse Short-Time Fourier Transform
  • iosr.dsp.lapwin(L,b)
    LAPWIN Laplace window.
  • iosr.dsp.localpeaks(x,mode)
    LOCALPEAKS Find local peaks and troughs in a vector
  • iosr.dsp.ltas(x,fs,varargin)
    LTAS calculate the long-term average spectrum of a signal
  • iosr.dsp.matchEQ(x,fs,mag...
    MATCHEQ Match the LTAS of a signal to an arbitrary spectral magnitude
  • iosr.dsp.rms(x,dim)
    RMS Calculate the rms of a vector or matrix
  • iosr.dsp.sincFilter(x,Wn,...
    SINCFILTER Apply a near-ideal low-pass or band-pass brickwall filter
  • iosr.dsp.smoothSpectrum(X...
    SMOOTHSPECTRUM Apply 1/N-octave smoothing to a frequency spectrum
  • iosr.dsp.stft(x,nfft,hop,fs)
    STFT Calculate the short-time Fourier transform of a signal
  • iosr.dsp.vsmooth(x,frame,...
    VSMOOTH Smooth a vector using mathematical functions
  • iosr.figures.chMap(M)
    CHMAP Create a monochrome-compatible colour map
  • iosr.figures.cmrMap(M)
    CMRMAP Create a monochrome-compatible colour map
  • iosr.figures.multiwaveplo...
    MULTIWAVEPLOT Stacked line plots from a matrix or vectors
  • iosr.figures.subfigrid(nr...
    SUBFIGRID Create axis positions for subfigures
  • iosr.general.cell2csv(C,f...
    CELL2CSV Output a cell array to a CSV file
  • iosr.general.checkMexComp...
    CHECKMEXCOMPILED Check if mex file is compiled for system
  • iosr.general.getContents(...
    GETCONTENTS Get the contents of a specified directory
  • iosr.general.updateConten...
    UPDATECONTENTS Create a Contents.m file including subdirectories
  • iosr.general.urn(varargin)
    URN Generate random number sequence without duplicates
  • iosr.install
    INSTALL Set search paths, and download and install dependencies.
  • iosr.statistics.getRmse(X...
    GETRMSE Calculate the root-mean-square error between input data
  • iosr.statistics.laprnd(va...
    LAPRND Pseudorandom numbers drawn from the Laplace distribution
  • iosr.statistics.qqPlot(va...
    QQPLOT Quantile-quantile plot with patch option
  • iosr.statistics.quantile(...
    QUANTILE Quantiles of a sample via various methods.
  • iosr.statistics.tab2box(X...
    TAB2BOX Prepare tabular data for boxPlot function
  • iosr.statistics.trirnd(va...
    TRIRND Pseudorandom numbers drawn from the triangular distribution
  • iosr.svn.buildSvnProfile(...
    BUILDSVNPROFILE Read data from files tagged with SVN keywords
  • iosr.svn.headRev(folders,...
    HEADREV Retrieve the head revision for specified files
  • iosr.svn.readSvnKeyword(f...
    READSVNKEYWORD Read data from a file tagged with an SVN keyword
  • classTemplate
    CLASSTEMPLATE Summary of this class goes on this H1 line
  • iosr.bss.mixture
    MIXTURE Class of binaural sound source separation mixture.
  • iosr.bss.source
    SOURCE Class of sound source separation source.
  • iosr.dsp.audio
    AUDIO Abstract superclass providing audio-related properties and methods.
  • iosr.statistics.boxPlot
    BOXPLOT Draw a box plot
  • Contents.m
    +IOSR
  • example.m
    determine STFT parameters
  • View all files

Join the 15-year community celebration.

Play games and win prizes!

» Learn more

5.0
5.0 | 1 rating Rate this file 14 Downloads (last 30 days) File Size: 611 KB File ID: #42763 Version: 1.0
image thumbnail

Subplot position calculator

by

 

22 Jul 2013 (Updated )

Calculate subplot positions by specifying figure margins and axis scaling.

| Watch this File

File Information
Description

NOTE: this function is now available from the IoSR Matlab Toolbox as iosr.figures.subfigrid.
-------------------------
pos = subfigrid(nrows,ncols)
pos = subfigrid(nrows,ncols,offset)
pos = subfigrid(nrows,ncols,offset,scale)

The spacing of axes using the subplot command can be quite large, and manipulating axis positions after plotting can be tricky. For publication quality graphics, it is better to specify the subplot position directly, rather than using subplot indices. For example:

figure
subplot('position',[0.1 0.1 0.2 0.2])
plot(rand(20,1))

This function creates appropriate position vectors, for use in the above scenario, based on the number of subplots required. Optional scaling and offset parameters allow the size of each subplot to be fine-tuned, and space for axis labels to be allotted. All calculations are performed in normalized units.

pos = subfigrid(nrows,ncols) creates an array of positions for positioning axes as subfigures. The array has dimensions [m,p,n]: m is the subplot row, n is the subplot column, and p is the position vector. By default, each axis will be scaled such that [width height] will be [1/ncols 1/nrows].

pos = subfigrid(nrows,ncols,offset) allows a margin offset to be specified. This should be a four-element vector specifying the margins thus: [left right top bottom]. By default offset=[0 0 0 0]. Axes will be scaled to fill the remaining space.

pos = subfigrid(nrows,ncols,offset,scale) allows the axes to be scaled. This should be a two-element vector specifying a scale factor that will be applied to each axis; scale(1) scales the width, scale(2) scales the height. The axes will be scaled such that the offset margin will be retained. By default scale=[1 1].

If scaling is required, but an offset is not, offset may be set to the empty matrix [].

Examples

Ex. 1
% Normal use of subfigrid
scrsz = get(0,'ScreenSize');
nrows = 2;
ncols = 3;
pos = subfigrid(nrows,ncols,...
  [0.05 0.01 0.01 0.05],[0.85 0.88]);

figure('units','pixels','position',...
  [scrsz(3)/4,scrsz(4)/4,scrsz(3)/2,scrsz(4)/2])
for m = 1:nrows
  for n = 1:ncols
      subplot('position',pos(m,:,n))
      plot(randn(20,1))
  end
end

Ex. 2
% Use ind2sub when row/col indices are not available
scrsz = get(0,'ScreenSize');
nrows = 2;
ncols = 3;
pos = subfigrid(nrows,ncols,...
  [0.05 0.01 0.01 0.05],[0.85 0.88]);

figure('units','pixels','position',...
  [scrsz(3)/4,scrsz(4)/4,scrsz(3)/2,scrsz(4)/2])
for p = 1:nrows*ncols
  [m,n] = ind2sub([nrows ncols],p);
  subplot('position',pos(m,:,n))
  plot(randn(20,1))
end

See also SUBPLOT.

Required Products MATLAB
MATLAB release MATLAB 7.11 (R2010b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (1)
23 Jul 2013 Jan Simon

Jan Simon (view profile)

This submission has a very good documentation: H1 line, description of inputs and outputs, example, See also line. Only the name of the author looks cryptic.

The code creates default values for omitted inputs, checks the inputs and contains useful comments.

You can omit the inner of the two loops easily, but this won't be a bottleneck in any program.

This submission is useful and usable for productive work and as example for nice code.

Updates
18 Sep 2016 1.0

Migrated to GitHub.

Contact us