MATLAB: Fill boxplot with different colors using RGB-Codes

boxplotrgb code

I am new to Matlab but managed to create grouped boxplots and want to color them. I tried it with the code above. It works with:
color = ['c','b','c','b','c','b'];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
patch(get(h(j),'XData'),get(h(j),'YData'),color(length(h)-j+1),'FaceAlpha',.5);
end
But I want to select special colors with RGB-Codes [11 166 222] and [0 178 169]. It works when I select just one color:
RGB=[11 166 222];
RGB2=[0 178 169];
color =[RGB;RGB;RGB;RGB;RGB;RGB];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
patch(get(h(j),'XData'),get(h(j),'YData'),color(j),'FaceAlpha',.5);
end
But when I attach the second color it creates totally different colors with RGB-Codes (157, 147, 208) and (254, 250, 142):
RGB=[11 166 222];
RGB2=[0 178 169];
color =[RGB;RGB2;RGB;RGB2;RGB;RGB2];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
patch(get(h(j),'XData'),get(h(j),'YData'),color(j),'FaceAlpha',.5);
end
What did I do wrong?
Do you know how I can get the colors I want?
Thank you so much.
If it is necessary, this is the whole code:
load 'FBE_.mat'
data = FBE_F1_30;
month = repmat({'Keine Rückmeldung','Positive Rückmeldung','Reale Rückmeldung'},1,2);
simobs = [repmat({'FBE'},1,3),repmat({'F1'},1,3)];
positions = [1 1.25 1.75 2 2.5 2.75];
a=boxplot(data,{month,simobs},'positions', positions,'colors',repmat('k',1,12),'factorgap',[5 3],'labelverbosity','minor','Symbol','ko');
xticks([1.125 2.125 3.125])
set(gca,'XTickLabel',{'Keine Rückmeldung','Positive Rückmeldung','Reale Rückmeldung'},'FontName','Arial','FontSize',11,'FontWeight','bold');
%Dicke des Medians ändern
set(a(6),'LineWidth',2);
set(a(13),'LineWidth',2);
set(a(20),'LineWidth',2);
set(a(27),'LineWidth',2);
set(a(34),'LineWidth',2);
set(a(41),'LineWidth',2);
%Boxplots einfärben
RGB1=[11 166 222];
RGB2=[0 178 169];
color = [RGB;RGB2;RGB;RGB2;RGB;RGB2];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
patch(get(h(j),'XData'),get(h(j),'YData'),color(length(h)-j+1),'FaceAlpha',.5);
end
%Beschriftungen
title('Vergleich der tatsächlichen Ergebnisse der FBEs und vermeintlich verstandenen Wörter','FontName','Arial','FontSize',12,'Position',[2.25, 107, 0])
ylabel('Verständlichkeit in %','FontName','Arial','FontSize',12,'FontWeight','bold','Position',[0.06, 50, 0])
c = get(gca, 'Children');
hleg1 = legend(c(1:2), 'FBE', 'Frage1' );
%Textfeld
text(6.75,102.5,'n=17','FontName','Arial','FontSize',11,'FontWeight','bold')
%Y-Hilfslinien einzeichnen
set(gca,'YGrid','on','Layer','top')
%Größe des Ausgabefensters festlegen, damit Abstände an x-Achse passen
f = figure(1);
set(f,'Units','normalized','Position',[0.2 0.2 0.45 0.55]);

Best Answer

It looks like you already found this post? Note that RGB values range between 0 and 1, so divide your color vector by 255.
color =[RGB;RGB2;RGB;RGB2;RGB;RGB2]./255;
It also looks like you are doing the same thing Rik pointed out in his answer in that post. You need to pull in all 3 columns of color:
color(j,:)
Related Question