Good uses of colors can help convey ideas effectively. It can help you accentuate certain concepts. Or you may need to use a gradient color that translates well when printed in gray scale. Joseph's entry really caught my attention. As the name suggests, it produces quite a vivid colormap. The idea is ingenious; he creates a gradient within each color, and that produces an accent at each level.
Let's see how it works. We'll first create a blue and red diverging color map, which gradually changes from blue to red with white in the center. We'll use the peaks function as the sample image.
% Create 13-level blue/red diverging color map: level = 13; n = ceil(level/2); cmap1 = [linspace(1, 1, n); linspace(0, 1, n); linspace(0, 1, n)]'; cmap2 = [linspace(1, 0, n); linspace(1, 0, n); linspace(1, 1, n)]'; cmap = [cmap1; cmap2(2:end, :)]; imagesc(peaks(500)); colormap(vivid(cmap)); caxis([-8 8]); colorbar
Notice how vivid it looks! vivid also has additional options to change the level of gradients.
colormap(vivid(cmap, [.4, .6]));
colormap(vivid(cmap, [0, 1]));
You can also get the regular colormap behavior:
colormap(vivid(cmap, [.5 .5]));
More on Colormaps
As I was writing this post, I learned quite a bit about colormaps. MATLAB has a set of standard colormaps described here. There are a few File Exchange entries that create additional colormaps, such as cbrewer, othercolor, and Color Palette Tables. There are also colormaps that would look nice when printed on a grayscale printer - Lab color scale and colorGray.
Get the MATLAB code
Published with MATLAB® 7.13