Get from Ico-github-logo

Highlights from
ColorBrewer: Attractive and Distinctive Colormaps

  • brewermap(N,scheme)
    The complete selection of ColorBrewer colorschemes (RGB colormaps).
  • View all files
4.5
4.5 | 4 ratings Rate this file 127 Downloads (last 30 days) File Size: 12.2 KB File ID: #45208
image thumbnail

ColorBrewer: Attractive and Distinctive Colormaps

by

 

22 Jan 2014 (Updated )

The complete palette of ColorBrewer colormaps. Simple selection by scheme name and map length.

| Watch this File

File Information
Description

One function provides the complete selection of the ColorBrewer colorschemes, especially intended for mapping and plots with attractive, distinguishable colors.

Simple to use: only the the colormap length and the colorscheme name are needed to select and define an output colormap. The colorscheme can be preselected by the user, after which only the colormap length is required to define an output colormap.

The function can be used as a drop-in replacement for the inbuilt colormap functions and it is compatible with all MATLAB functions that require a colormap. The function consists of just one M-file that provides all of the ColorBrewer colorschemes (no file-clutter!). Downsampling or interpolation of the nodes occurs automatically (if required) using each scheme's complete palette of nodes (not just the largest predefined colormap). As an option, the colormap can be returned reversed.

Calling brewermap('demo') creates a figure that displays all of the ColorBrewer colorschemes.

This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/). See the ColorBrewer website for further information about each colorscheme, colorblind suitability, licensing, and citations.

This is the only submission on MATLAB File Exchange that does NOT break the ColorBrewer license conditions!

### Examples ###

% Plot a scheme's RGB values:
rgbplot(brewermap(13,'Blues')) % normal
rgbplot(brewermap(13,'*Blues')) % reversed

% View information about a colorscheme:
[~,num,typ] = brewermap(0,'Paired')
 num = 12
 typ = 'Qualitative'

% Multiline plot using matrices:
N = 6;
axes('ColorOrder',brewermap(N,'Pastel2'),'NextPlot','replacechildren')
X = linspace(0,pi*3,1000);
Y = bsxfun(@(x,n)n*sin(x+2*n*pi/N), X.', 1:N);
plot(X,Y, 'linewidth',4)

% Multiline plot in a loop:
N = 6;
set(0,'DefaultAxesColorOrder',brewermap(N,'Accent'))
X = linspace(0,pi*3,1000);
Y = bsxfun(@(x,n)n*sin(x+2*n*pi/N), X.', 1:N);
for n = 1:N
    plot(X(:),Y(:,n), 'linewidth',4);
    hold all
end

% New colors for the "colormap" example:
load spine
image(X)
colormap(brewermap([],'*YlGnBu'))

% New colors for the "surf" example:
[X,Y,Z] = peaks(30);
surfc(X,Y,Z)
colormap(brewermap([],'RdYlGn'))
axis([-3,3,-3,3,-10,5])

% New colors for the "contourcmap" example:
brewermap('*PuOr'); % preselect the colorscheme.
load topo
load coast
figure
worldmap(topo, topolegend)
contourfm(topo, topolegend);
contourcmap('brewermap', 'Colorbar','on', 'Location','horizontal',...
    'TitleString','Contour Intervals in Meters');
plotm(lat, long, 'k')

### Note ###

Compared to other functions available on MATLAB File Exchange, this function:
* Consists of just one convenient M-file (no .mat files).
* Requires only the standard ColorBrewer scheme name to select the colorscheme.
* Supports all ColorBrewer colorschemes.
* Interplolates the complete palette for each scheme (eg. Diverging = 15 colors).
* Outputs the MATLAB standard N-by-3 numeric RGB array.
* Default length is the standard MATLAB default colormap length (same length as the current colormap).
* Is compatible with all MATLAB functions that use colormaps (eg: "contourcmap").
* Includes the option to reverse the colormap color sequence.
* Does not break ColorBrewer's Apache license conditions.

Acknowledgements

Light Bartlein Color Maps, Vivid Colormap, Cold Colormap, Red Blue Colormap, Haxby Color Map, Bipolar Colormap, Perceptually Improved Colormaps, Generate Maximally Perceptually Distinct Colors, Matlab Colormaps As Seen By Color Blind Users, Stoplight, Othercolor, Color Gradient: Generate Custom Linear Colormaps, Colormaps Compatible With Red Green Color Perception Deficiencies, Cbrewer : Colorbrewer Schemes For Matlab, Polarmap: Polarized Colormap, Build Custom Colormaps, Custom Colormap, Beautiful And Distinguishable Line Colors + Colormap, Cubehelix Colormaps: Beautiful, Distinct, Versatile!, Intuitive Rgb Color Values From Xkcd, Rgbmap Color Maps, and Convert Between Rgb And Colornames inspired this file.

This file inspired Paruly, Cubehelix Colormaps: Beautiful, Distinct, Versatile!, and Convert Between Rgb And Colornames.

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 (8)
23 Mar 2015 Chad Greene

Chad Greene (view profile)

This function is excellent, easy to use, and works perfectly, right out of the box. Thanks for sharing, Stephen.

05 Oct 2014 Stephen Cobeldick

M S : Thank you for your feedback. I am glad that you found my submission easy to use, as the convoluted usage of other ColorBrewer submissions on MATLAB File Exchange was one of the main motivators to write this. I intended that usage of this function should be as much like the standard colormap functions as was reasonable and feasible.

Your suggestions and observations about the unsuitability of the ColorBrewer schemes for colorblind users are very true. As you point out, the white middle color is unclear in many situations, and not just for readers with vision deficiencies.

However I did not create the ColorBrewer schemes (credit goes to Cynthia Brewer for this), nor do I make any claims about their suitability for a particular purpose, other than to say that they are "attractive, distinguishable colors". Any claims about the suitability for any particular purpose are solely those of Cynthia Brewer, for whom I am not responsible. The sole purpose of this submission is to provide the best access to the ColorBrewer colorschemes for MATLAB File Exchange users.

You might like to consider using the colormapeditor:
http://www.mathworks.com/help/matlab/ref/colormapeditor.html

Writing a colorblind-friendly maximally distant colormap generator would be quite interesting, but this is a clearly a very different task to this simple porting of Cynthia Brewer's existing colorscheme data. For a start, each of protanopia, deuteranopia, tritanopia, protanomaly, deuteranomaly, and tritanomaly would require a completely different set of permitted colors. If you are interested, contact me and we could develop this together.

Comment only
02 Oct 2014 M S

M S (view profile)

Pros: supports colorblind palette, which is desperately needed for matlab visualization. Easy to use.

Cons: poor for any plotting purpose; it is not designed for any visualization where there's a background color. For example, for a 'divergent', 'colorblind friendly' scheme, the middle color is always white or off white, which is obviously terrible for plots with a white background.

I wish there were a way to combine another FEX submission, distinguishable_colors--which not only arranges maximally distant colors, but takes into account background color--with colorblind friendly implementation.

18 Aug 2014 Stephen Cobeldick

You are completely correct that it is possible to redistribute the ColorBrewer colorschemes: in fact this is explicitly permitted by the Apache license that they are released under.

Note though the very first license condition for redistributing ColorBrewer says that "Redistributions as source code must retain the above copyright notice, this list of conditions and the following disclaimer". So when someone redistributes it, it must be accompanied by the same Apache license*. However MATLAB File Exchange does not permit any license to be used other than the BSD license:
http://www.mathworks.com/matlabcentral/FX_transition_faq.html
"For consistency, the BSD license will be the standard for the File Exchange".

So we reach a minor impasse: to redistribute ColorBrewer requires an Apache license, to submit to MATLAB FEX requires a BSD license. Snap. I could distribute a complete version of this function under an Apache license, but not on MATLAB FEX.

Several other submissions have simply ignored ColorBrewer's Apache license, but hopefully FEX does not turn into an exchange of any licensed code that happens to take peoples fancy.

* For an example of this, scroll down to the bottom of the excel spreadsheets that are available from http://colorbrewer.org/

Comment only
18 Aug 2014 Nicholas

Nicholas (view profile)

Nice job, but not sure why you state you cannot redistribute the colormaps since the website suggests that you can, assuming you meet the requirements. It does, however, specifically state you cannot call the software "ColorBrewer"...

see http://www.personal.psu.edu/cab38/ColorBrewer/ColorBrewer_updates.html

Comment only
14 Aug 2014 Michael Chan

Michael Chan (view profile)

Beautiful work, Stephen.

09 Aug 2014 John D'Errico

John D'Errico (view profile)

A very nice submission to upgrade your figures for good viewing by all viewers.

Excellent help and examples for use. I found the colorbrewer.org web site interesting too.

05 Aug 2014 Stephen Cobeldick

I just noticed that Internet Explorer 8 does not display the hyperlink 'downloads' on the ColorBrewer website:
http://colorbrewer2.org/
The complete list of hyperlinks above the main image should be 'how to use', 'updates', 'downloads' and 'credits'. This displays correctly on the current versions of Firefox and Chrome.

If using IE the required Excel spreadsheet can be navigated using the following hyperlinks:
'updates' -> 'Excel files with all of the ColorBrewer RGB numbers' -> 'ColorBrewer_all_schemes_RGBonly3.XLS'.

Or simply download from the following URL:
http://www.personal.psu.edu/cab38/ColorBrewer/ColorBrewer_all_schemes_RGBonly3.XLS

Comment only
Updates
06 Feb 2014

- Add third output: colorscheme type as a string.
- Better input checking and error messages.

07 Aug 2014

- Allow case-insensitive scheme selection.
- Simplify downsampling indexing.

08 Aug 2014

- Simplify spreadsheet downloading instructions.

03 Nov 2014

- Downloadable as toolbox

03 Jan 2015

* Change to GitHub version, complete with Apache license.

04 Jan 2015

- Edit online blurb..

06 Jan 2015

- Re-insert that disappearing newline at after the first paragraph. Why does this happen, MATLAB?

Contact us