Edit colorbar of heatmap (string)
    33 views (last 30 days)
  
       Show older comments
    
    Gerrit Liedtke
 on 26 Jun 2019
  
    
    
    
    
    Answered: Tony Castillo
      
 on 19 Dec 2023
            Hi,
Is it possible to edit the colorbar of a heatmap such that it looks like the following image (rapidly created with paint ;) ) 

So the values aren't numeric but strings.
Thanks for help!
1 Comment
  Adam Danz
    
      
 on 26 Jun 2019
				
      Edited: Adam Danz
    
      
 on 28 Jun 2019
  
			The handle to the colorbar in heatmap is inaccessible. Without the handle, you can't change properties to the colorbar; you can't even delete it.  Even when you try to add a new colorbar, you cannot output the handle with a heatmap plot.  
 heatmap() in general is highly restrictive in the user's abilty to manipulate many of its properties.  I used to use heatmap more frequently prior to these changes and have moved onto using imagesc() instead.   Bummer.
Accepted Answer
  Adam Danz
    
      
 on 26 Jun 2019
        
      Edited: Adam Danz
    
      
 on 27 Jun 2019
  
      This can't be done with heatmap() (see comments under the question). 
If you're using a different function that allows access to the colobar, it's fairly straightforward.  Here's a demo. 
% Create demo
C = rand(3,4)/10; 
imagesc(C)
cbh = colorbar(); 
% set color range
caxis([0,.1])
% set ticks 
set(cbh, 'YTick', [0.001, 0.01, 0.05, .1], ...
    'YTickLabel', {'p=0.001', 'p=0.01', 'p=0.05', 'p=.1'})

0 Comments
More Answers (2)
  Christian Karcher
      
 on 28 Apr 2020
        
      Edited: Christian Karcher
      
 on 28 Apr 2020
  
      The handle to the colorbar is accessible, and with it all modifications:
figure; 
heatmap(rand(5))
axs = struct(gca); %ignore warning that this should be avoided
cb = axs.Colorbar;
cb.TickLabels = {'p<0.1','p>0.1','...'};
7 Comments
  Alexander Krauss
 on 29 Sep 2022
				
      Edited: Alexander Krauss
 on 29 Sep 2022
  
			Great solution, thanks a lot (also for the rapid reply)  ! :)
Best regards,
Alex
  Muhanned Alsaif
 on 21 Aug 2023
				
      Edited: Muhanned Alsaif
 on 21 Aug 2023
  
			another way to access the colorbar can be found in the following post:
  Tony Castillo
      
 on 19 Dec 2023
        Is it possible to add a label to that colour bar which is directly created in a heatmap? I mean we can tag a SURF plot (the colourbar because it is separated from the surfplot), but I have not found the manner of doing the same in the colorbar of the heatmap.
0 Comments
See Also
Categories
				Find more on Color and Styling in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!