Non-uniform contourf/imagesc/colorbar
Editor's Note: This file was selected as MATLAB Central Pick of the Week
The colormap in Matlab supports only linear mapping, which is inconvenient when plotting data spaning multiple orders, e.g., peaks(100).^4. This function uses the trick of piecewise-linearly mapping to allow non-uniform contour levels contourf/imagesc/pcolor.
--- Usage ---
varargout = contourfnu(x,y,data,v,cmap,pos_colorbar,overticklabel,method,ninterp,nancolor)
--- Input Variables ---
x : x-coordinates of grid, vector or 2d matrix
y : y-coordinates of grid, vector or 2d matrix
If x and y are vectors, then length(x)==size(z,2) and length(y)==size(Z,1).
If x and y are 2d matrix, they are generated by meshgrid
data : 2d matrix to be ploted
(Optional:)
v : vector of contour levels (default:linspace(datamin,datamax,10))
cmap : color map array (default:jet)
pos_colorbar : 'none', or location with respect to the axes (default:'eastoutside')
overticklabel : whether or not label the overrange ticks at colorbar (default:true)
method : imagesc, contourf, contour or pcolor (default:imagesc)
ninterp : repeatedly interp times in each dimension (default:0)
nancolor : axis backgroud color
--- Output Variable ---
hout : structure with handles
.h plot handle
.c contour matrix (method='contourf')
.hc colorbar handle (pos_colorbar~='none')
Cite As
Yuxin Jiang (2026). Non-uniform contourf/imagesc/colorbar (https://www.mathworks.com/matlabcentral/fileexchange/65424-non-uniform-contourf-imagesc-colorbar), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- MATLAB > Graphics > 2-D and 3-D Plots > Contour Plots >
Tags
Acknowledgements
Inspired by: contourfcmap: filled contour plot with precise colormap
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 1.5.0.0 | Add support for pcolor |
||
| 1.4.0.0 | Update demo and description.
|
||
| 1.3.0.0 | handle Inf(s) |
||
| 1.2.0.0 | handle NaNs |
||
| 1.1.0.0 | add a parameter to control the max/min ticklabel(s)
|
||
| 1.0.0.0 | update description |
