Get from Ico-github-logo

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

» Watch video

Highlights from
contourfcmap: filled contour plot with precise colormap

  • function_handle.m
  • contourcs(varargin)
    CONTOURCS Wrapper to CONTOURS to Obtain Structure Output
  • contourfcmap(x,y,z,clev,c...
    CONTOURFCMAP Filled contour plot with specified colors
  • fillnan(v, coords, varargin)
    FILLNAN Fill in missing values in an array with nearest neighbor
  • multiplepolyint(x, y, var...
    MULTIPLEPOLYINT Multiple polygon intersection
  • parsepv(Param, pvpairs, v...
    PARSEPV Parses parameter/value pairs
  • README.m
    |contourfcmap.m|: filled contour plot with precise colormap
  • View all files
4.6 | 8 ratings Rate this file 33 Downloads (last 30 days) File Size: 756 KB File ID: #29638 Version: 1.7
image thumbnail

contourfcmap: filled contour plot with precise colormap


Kelly Kearney (view profile)


06 Dec 2010 (Updated )

Creates a filled contour plot, with more precise control over colors than contourf.

| Watch this File

File Information

Create a filled contour plot in Matlab, with better color-to-value clarity. See full description, along with examples, at


This file inspired Cubehelix Colormaps: Beautiful, Distinct, Versatile!.

MATLAB release MATLAB 7.10 (R2010a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (21)
28 Sep 2016 Kelly Kearney

Kelly Kearney (view profile)


Thanks for pointing that out; new version just uploaded that should fix that error for pre-2011b releases.

Comment only
28 Sep 2016 Greg King

This function is just what I need, but it reports an error when I run it using ...
MATLAB Version (R2010b)
on mac osx.

The error is that caused by a call to narginchk, which is not in the R2010 release.

Comment only
22 Sep 2016 Kelly Kearney

Kelly Kearney (view profile)


No, I haven't tested this in 2016b yet. If you ask because you've found an incompatibility, please follow the GitHub link (upper right) and enter it as an issue.

Comment only
22 Sep 2016 jmlarson

Is there a version of this that works for MATLAB R2016b?

19 Nov 2015 Warwick

I frequently find this submission of yours to be tremendously useful. I often have a suite of plots or a panel of subplots and this script is the only way I can get consistency of colouring throughout.

Meanwhile some other users may find the following tweak helpful (it took me a while to twig) - To get rid of the actual contour lines, use h.h.LineColor = 'none'.

I'd rate the script at 5 but I've already done earlier this year.

Comment only
09 Apr 2015 Kelly Kearney

Kelly Kearney (view profile)


Tracked that bug to line 211, where meshgrid-style input was being incorrectly classified as a vector (and therefore x/y weren't converted to vectors as they should be). Now fixed.

Comment only
08 Apr 2015 Kyle Wang

Found a possible bug at Line #468 in contourfcmap.m.

The code
F = griddedInterpolant({x,y},z');
shall be corrected as
F = griddedInterpolant(x',y',z');

Otherwise the built-in example won't run.

21 Mar 2015 Kelly Kearney

Kelly Kearney (view profile)


Thanks for pointing out this shortfall. I've modified the code so it now mostly supports irregular data grids (there are some edge cases involving NaNs that don't work so well, but most contourf-friendly data should be fine).

Comment only
20 Mar 2015 Warwick

In CONTOURF, "If X or Y [matrices] is irregularly spaced, then contourf calculates contours using a regularly spaced contour grid, and then transforms the data to X or Y."

Contourfcmap works fine when I try it with regular X and Y matrices, but not with Y as an irregular one. When I attempt to do so, then Contourfcmap returns this error messsage - 'Error using interp2>makegriddedinterp (line 237)
Input grid is not a valid MESHGRID.

Error in interp2 (line 136)
F = makegriddedinterp(X, Y, V, method,extrap);

Error in contourfcmap (line 389)
tmp = interp2(x,y,z,xyz{ii}(1,:), xyz{ii}(2,:));".

Is it possible to incorporate the capability for irregular Y matrix into contourfcmap? I have the feeling it might be a ridiculously massive amount of work.
Nevertheless, for regular grids, I find your function gives the desired superior graphic. So, thank you.

04 Mar 2015 Kelly Kearney

Kelly Kearney (view profile)


You're right... I recently updated the code to support NaNs in the data and didn't thoroughly test the new bit for older versions of Matlab. Just added a fix for that.

Comment only
03 Mar 2015 ed zaron

Hi Kelly,

I just downloaded and tried out this package but received this error when I tried the basic demo:
contourfcmap(x,y,z,[-5 -3 -2:.5:2 35],jet(12),[.8 .8 .8], [.2 .2 .2], 'eastoutside')
[x,y] = meshgrid(linspace(0,1,100));

Undefined function or variable "isn".

Error in contourfcmap (line 344)
elseif isn(ip)

I am running R2012b ( 64-bit (glnxa64).

The concept of the package looks great; I'm sure it is a version incompatibility or typo in the latest update.

All the best,


Comment only
02 Aug 2014 Kelly Kearney

Kelly Kearney (view profile)


Your x, y, and z data need to formatted in the same way as for the native contourf function, so you'll need to grid your data (not knowing the arrangement of the points in your vectors, I don't know whether you'd have to simply reshape, regrid, or use a scattered interpolant). Type help contourfcmap to see an example of use.

Comment only
30 Jul 2014 CARLA QUISPE

hello ,
I have a matriz of 3 colums (x,y,z), how I should use the code to run the program. what of the three files I must to run firts
thanks a lot!

04 Mar 2013 Jan

Jan (view profile)

Superb function, thanks.

Comment only
15 Jan 2013 Franzi

Franzi (view profile)

exactly what I needed

30 Nov 2012 peter

peter (view profile)

great submission, thanks a lot

26 Jun 2012 Kelly Kearney

Kelly Kearney (view profile)

@Earle Wilson,

Both saturated low and high values should be colored by the colors defined by the 'lo' and 'hi' inputs, respectively; by default these are white, but you can set them to be the same as the first and last cmap values if you want a saturated effect. If you see a different result please send me an example and I'll look into it.

Comment only
10 May 2012 Earle Wilson

great function! This saved me many hours of working around all the bugs in contourf.

The only (minor) short coming is that this function doesn't deal with saturated low values. Eg. if you enter:
and there are values in z < min(clev), they will be plotted as white spaces. This is an issue with contourf really, which I won't get into here. An easy fix is set all values in z outside the clev limits to min(clev) or max(clev). Eg.
toohigh = z>max(clev); z(toohigh) = max(clev);
loolow = z<min(clev); z(toolow) = min(clev);

19 Oct 2011 Kelly Kearney

Kelly Kearney (view profile)

Added minmax subfunction into main code (overlooked this dependency on a simple helper function in previous upload). Thanks, Karin and Aurelien, for pointing out that mistake.

Comment only
18 Oct 2011 Aurelien Queffurust

I wanted to test your code but:
the minmax function which is required by your code is not shipped .

Another remark:
You have forgotten a bracket in the given example in the header of M-file:
[x,y] = meshgrid(linspace(0,1,100)
should be:
[x,y] = meshgrid(linspace(0,1,100))

Now waiting for minmax.m before rating.



Comment only
09 May 2011 Tjaart de Wit

Great function! Thanks

07 Dec 2010 1.1

minor grammatical fix in description

19 Oct 2011 1.2

Fixed accidental omission of helper function in colorbar generation (minmax). Also corrected minor typo in example and added more informative example image.

30 Nov 2012 1.3

Fixed bug where new colorbar stole focus from axis.

23 Jul 2014 1.4

-Rewritten for R2014b, no longer relies on contourf object
-Added option to display all color levels evenly on the colorbar, regardless of value

03 Oct 2014 1.5

Corrected a bug in polygon generation where corner points of patches were out of order.

18 Aug 2015 1.6

Linked to GitHub repository

03 Dec 2016 1.7

Small update to description, pointing reader to github for readme.

Contact us