Barcharts colours based on other vectors
    35 views (last 30 days)
  
       Show older comments
    
    Nikolas Spiliopoulos
 on 24 Jun 2020
  
    
    
    
    
    Commented: Nikolas Spiliopoulos
 on 25 Jun 2020
            Hi all,
I have 3 vectors a,b,c with 4 numbers in each of them
I create another vector d with all the values of vectors a,b,c Sorted.
then I want to plot a barchart of vector d, BUT I would like to have different colours in the bars based on which vector they belong.
Can you help me with this?
for example:
 values belong to vector a=green colour
 values belong to vector b=blue colour
 values belong to vector c=orang colour
Hope the quesiton is clear
thanks in advance
Nikolas
0 Comments
Accepted Answer
  Adam Danz
    
      
 on 24 Jun 2020
        The basic idea is to store the output handle to the bar objects
bh = bar(____); 
Set the FaceColor to flat
bh.FaceColor = 'flat'; 
Redefine the CDdata which defines the color of each bar
colorData = bh.CData;  % Current color arrangement. 
% Example: change color of bar #2 to red
bh.CData(2,:) = [1 0 0]; 
% Example: define the colors based on the jet colormap
bh.CData = jet(size(bh.CData,1));
3 Comments
  Adam Danz
    
      
 on 25 Jun 2020
				You just need to index the color values accordingly. 
a = [10 20 30];
b = [15 25 50];
c = [5 40 80];
d=[a b c];
ID = [ones(size(a)), ones(size(b))+1, ones(size(c))+2];
[d_sorted, sortIdx] = sort(d);
ID_sorted = ID(sortIdx); 
bh = bar(d_sorted);
colors = jet(max(ID)); % Define a colormap
bh.FaceColor = 'flat';
bh.CData = colors(ID_sorted,:) % set the colors.
More Answers (0)
See Also
Categories
				Find more on Orange 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!
