Search code examples
matlabmatlab-figurecolorbar

How to determine if an axes already as a colorbar?


I would like to determine if an axes already has a colorbar. I have code which plots many objects on the same axes, but I only want to create and define the colorbar once to make things more efficient. I've tried looking for a ColorBar object as a child of the figure handle, but I have multiple subplots in the same figure, and each may or may not need their own colorbar. Is there a way to determine if a particular axes has a colorbar associated with it?


Solution

  • Credit to Voss at MATLAB Answers

    There is a hidden axes property called 'Colorbar', which you can use.

    % two axes, one with colorbar, one without
    ax = subplot(2,1,1);
    plot(1:10)
    colorbar()
    ax(2) = subplot(2,1,2);
    plot(1:10)
    
     ax1_has_colorbar = ~isempty(ax(1).Colorbar)
    

    Returns true

     ax2_has_colorbar = ~isempty(ax(2).Colorbar)
    

    Returns false