newcolorbar documentation

The newcolorbar function creates a new set of invisible axes matching the size and extents of the current axes. This allows a second colormap to be used in such a way that it is perceived to be two separate colormaps and two colorbars in the same axes.

Contents

Syntax

colorbar
colorbar(Location)
colorbar(...,PropertyName,PropertyValue)
[cb2,ax2,ax1] = colorbar(...)

Description

colorbar creates a new set of axes and a new colorbar in the default (right) location.

colorbar(Location) specifies location of the new colorbar as 'North' inside plot box near top 'South' inside bottom 'East' inside right 'West' inside left 'NorthOutside' outside plot box near top 'SouthOutside' outside bottom 'EastOutside' outside right (default) 'WestOutside' outside left

colorbar(...,PropertyName,PropertyValue) specifies additional name/value pairs for colorbar.

[cb2,ax2,ax1] = colorbar(...) returns handles of the new colorbar cb2, the new axes ax2, and the previous current axes ax1.

Example 1

Let's plot some parula-colored scattered data atop a grayscale gridded dataset. Start by plotting the gridded data. We'll use the inbuilt peaks dataset for this example:

pcolor(peaks(500))
shading interp
colormap(gca,gray(256))
colorbar('southoutside')

The newcolorbar function differs from Matlab's colorbar function in that we have to create a newcolorbar before plotting the new color-scaled dataset. We can create a new colorbar quite simply:

newcolorbar

Then plot some random color-scaled scattered data: Plot a scattered dataset with parula colormap:

scatter(500*rand(30,1),500*rand(30,1),60,100*rand(30,1),'filled')

Example 2

Now let's repeat Example 1, but add a little formatting. I'm using Stephen Cobeldick's brewermap function to create the lovely colormaps:

figure
pcolor(peaks(500))
shading interp
colormap(gca,brewermap(256,'greens'))
cb1 = colorbar('southoutside');
xlabel(cb1,'colorbar for peaks data')

Add a new colorbar toward the bottom inside of the current axes and specify blue text:

cb2 = newcolorbar('south','color','blue');

Plot scattered data and label the new colorbar:

scatter(500*rand(30,1),500*rand(30,1),100,8*randn(30,1),'filled')
colormap(gca,brewermap(256,'*RdBu'))
caxis([-10 10]) % sets scattered colorbar axis
xlabel(cb2,'colorbar for scattered data','color','blue')

Example 3: Three colorbars

Here's an example of three colorbars:

figure
pcolor(peaks(500))
shading interp
colormap(gca,brewermap(256,'greens'))
cb1 = colorbar;
ylabel(cb1,'colorbar for background peaks data')

cb2 = newcolorbar('southoutside') ;
scatter(500*rand(30,1),500*rand(30,1),100,8*randn(30,1),'filled')
colormap(gca,brewermap(256,'reds'))
caxis([-10 10]) % sets scattered colorbar axis
xlabel(cb2,'colorbar for scattered data','color','blue')

cb3 = newcolorbar('south');
pcolor(1:100,401:500,peaks(100))
shading interp
xlabel(cb3,'colorbar for peaks inset')

Author Info

The newcolorbar function was written by Chad A. Greene of the University of Texas at Austin's Institute for Geophysics (UTIG), August 2015.