Version 2.3, 3/2007
(*What's NEW: 9/2010, A colorbar solution)
Problem: There is only one colormap per figure, so all plots share the same colormap. Often one wants different colormaps.
Solution: This function pair provides an easy way to have plots using different colomaps in the same figure.
Example:
subplot(2,1,1)
imagesc(peaks)
colormap hot
freezeColors %freeze this plot's colormap
subplot(2,1,2)
colormap hsv % won't change any frozen plots!
surf(peaks)
freezeColors
etc...
**** COLORBAR WORKAROUND (NEW 9/2010) ****
** Note: in recent versions of MATLAB the colorbar is reinitialized
** whenever you call COLORMAP, which undoes the effects of freezeColors.
**
** Suggested solution: Use the function CBFREEZE, by
** Carlos Adrian Vargas Aguilera, located in the fileexchange
** http://www.mathworks.com/matlabcentral/fileexchange/24371
%usage
h=colorbar; cbfreeze(h), or simply cbfreeze(colorbar)
%Colorbar workaround example
imagesc(peaks)
freezeColors
cbfreeze(colorbar)
Since Carlos has made a nice solution, I have chosen not to duplicate his efforts. Please use his fine code.
****
FUNCTIONS
freezeColors Freeze colors of plots, making them immune to later changes in the colormap. Converts colors of many graphics objects (images, surfaces, scattergroups, bar plots, patches, etc--anything using indexed CData) to [r g b] truecolor.
unfreezeColors Reverses the effects of freezeColors. Restores the original indexed color data, allowing the colormap and caxis to again affect the plots.
Demo & Documentation in freezeColors_pub.html, test in test/test_main.m. |