Effacer les filtres
Effacer les filtres

Changing color of individual bars in a grouped bar chart

24 vues (au cours des 30 derniers jours)
Deepak Prakash K
Deepak Prakash K le 26 Fév 2019
Commenté : Fargol Rezayaraghi le 13 Août 2022
c = [25;55];
names = {'GR = 5.57' ; 'GR = 6.17'};
y = [604 603 ; 903 903 ; 1083 1083]';
h = bar(c,y,'FaceColor','flat');
set(gca, 'XTickLabel', names , 'TickLabelInterpreter', 'latex', 'FontSize' , 13); % , 'TickLabelInterpreter', 'latex'
ylabel({'\% contribution'},'Interpreter','latex', 'FontSize' , 14) % ,'Interpreter','latex'
xlim = get(gca,'xlim');
hold on
plot(xlim,[925 925],'LineStyle','--','Color','r','LineWidth',1.5)
In the code given above, I want to color those bars whose value is greater than 925 as red and those with less than 925 as green. I have refered to a lot of Matlab discussions regarding coloring of bar graph but nothing seems to work.
Is there a method also to have two x axis labels? Where I label each bar in a group and I label the group as well?
Thanks in advance.

Réponse acceptée

Deepak Prakash K
Deepak Prakash K le 26 Fév 2019
The question has been resolved. The following code helps to change color of each bar in the grouped bar plot.
c = [25;55];
names = {'GR = 5.57' ; 'GR = 6.17'};
y = [604 603 ; 903 903 ; 1083 1083]';
h = bar(c,y,'FaceColor','flat');
h(1).CData(1,:) = [0 1 0]; % group 1 1st bar
h(1).CData(2,:) = [0 1 0]; % group 1 2nd bar
h(2).CData(1,:) = [0 1 0]; % group 2 1st bar
h(2).CData(2,:) = [0 1 0]; % group 2 2nd bar
h(3).CData(1,:) = [1 0 0]; % group 3 1st bar
h(3).CData(2,:) = [1 0 0]; % group 3 2nd bar
  1 commentaire
Fargol Rezayaraghi
Fargol Rezayaraghi le 13 Août 2022
Great! Thank you so much! I've been spending more than 12 hours to figure that out.

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 26 Fév 2019
YOu can use (bar,....','stacked')..
You need to play with inputs to get your value.
c = [25;55];
names = {'GR = 5.57' ; 'GR = 6.17'};
y = [604 603 ; 903 903 ; 1083 1083]';
h = bar(c,y,'stacked','FaceColor','flat');
set(gca, 'XTickLabel', names , 'TickLabelInterpreter', 'latex', 'FontSize' , 13); % , 'TickLabelInterpreter', 'latex'
ylabel({'\% contribution'},'Interpreter','latex', 'FontSize' , 14) % ,'Interpreter','latex'
xlim = get(gca,'xlim');
hold on
plot(xlim,[925 925],'LineStyle','--','Color','r','LineWidth',1.5)
  3 commentaires
KSSV
KSSV le 26 Fév 2019
i got your question....you have to change your input accordingly...
Deepak Prakash K
Deepak Prakash K le 26 Fév 2019
Can you please elaborate on your comment? What do you mean change the input accordingly? What input are you refering to?

Connectez-vous pour commenter.

Produits


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by