Why legend is not displayed?

How can I display the legend at my desired side outside the figure? I run the following code but it doesn't work:
clear all; close all; clc
one=rand(100,1);
fitness2sn0=one';
one=rand(100,1);
fitness2sn5=one';
one=rand(100,1);
fitness2sn10=one';
one=rand(100,1);
fitness2sn15=one';
fitness2sn0=sort(fitness2sn0,'descend');
fitness2sn5=sort(fitness2sn5,'descend');
fitness2sn10=sort(fitness2sn10,'descend');
fitness2sn15=sort(fitness2sn15,'descend');
h1=boxplot([fitness2sn0; fitness2sn5; fitness2sn10; fitness2sn15].');
set(h1,{'linew'},{2})
grid
Ax = gca;
Ax.YLabel.String = '\bf fitness';
Ax.YScale = 'log';
Ax.XTickLabel = compose('2sn%d',[35 45 55 65]);
Ax.YLim = [1E-3 1e0];
title('\bf Fitness')
set(gca,'linew',2)
lgd = legend('35dB', '45dB','55dB','65dB')
lgd.Location = 'southoutside';

 Risposta accettata

and do the modification like the following:
one=rand(100,1);
fitness2sn0=one';
one=rand(100,1);
fitness2sn5=one';
one=rand(100,1);
fitness2sn10=one';
one=rand(100,1);
fitness2sn15=one';
fitness2sn0=sort(fitness2sn0,'descend');
fitness2sn5=sort(fitness2sn5,'descend');
fitness2sn10=sort(fitness2sn10,'descend');
fitness2sn15=sort(fitness2sn15,'descend');
colors = [1 0 0; 0 0.5 0; 0.5 0 0; 0 0 0.5]; % Add different color
h1=boxplot([fitness2sn0; fitness2sn5; fitness2sn10; fitness2sn15]','Colors',colors);
set(h1,{'linew'},{2})
grid
Ax = gca;
Ax.YLabel.String = '\bf fitness';
Ax.YScale = 'log';
Ax.XTickLabel = compose('2sn%d',[35 45 55 65]);
Ax.YLim = [1E-3 1e0];
title('\bf Fitness')
set(gca,'linew',2)
hChildren = findall(gca,'Tag','Box');
lgd = legend(hChildren([4 3 2 1]), {'35dB','45dB','55dB','65dB'});
lgd.Location = 'southoutside';

11 Commenti

Thanks for your kind response dear Simon Chan. But how can we add the following colors instead of those you have given.
colors=['blue', 'red', 'yellow', 'violet'];
Try this:
colors = [0,0,1; 1,0,0; 1,1,0; 238/255,130/255,238/255];
Sadiq Akbar
Sadiq Akbar il 5 Feb 2023
Modificato: Sadiq Akbar il 5 Feb 2023
Thanks for your kind response dear Simon Chan. But I want colours like this as shown in the attachment.
colors = [0,0.447,0.741; 0.85,0.325,0.098; 0.929,0.694,0.125; 0.494 0.184 0.556];
Actually you can retrieve the colors as follow:
h = openfig('desiredColors.fig');
hLine = findobj(h.Children,'Type','Line');
colors = flipud(cat(1,hLine.Color)); % Flip up down since the color is reversed
Thanks for your kind response dear Simon Chan. Actually these colours in the attachment are the default colors of MATLAB. I don't want to use this figure for color extraction. I want that MATLAB itself assigns its default color like the one shown in the attachment. In other graphs, MATLAB has assigned its default colors like in the attachment but here in this code, MATLAB doesn't assign its default colors like this. Why? And how can we invoke that?
I don't have any idea about the default colors in different MATLAB graphics. Sorry about that.
Its ok dear Simon Chan. You have done a lot. I am going to accept your answer.
DGM
DGM il 5 Feb 2023
Modificato: DGM il 5 Feb 2023
The 'lines' colormap gives the default colors used by objects using the 'colororder' property of the axes. So you could use:
colors = lines(4);
If your inputs were in an array of some sort, the argument (i.e. 4) could also be defined programmatically, but the way they're given as separate named variables, there isn't a practical way to know how many things you intend to pass to boxplot() before you do.
Thanks a lot dear DGM for your kind response. Indeed it works. But how can I accept your answer also or if not possible then how can I vote you as there is no 'vote' icon?
DGM
DGM il 5 Feb 2023
Simon's answer is the core of any solution to this problem, so it's appropriate that he gets credit. While it's sometimes unfortunate that comments can't be upvoted for emphasis, your comment is verification that it helped. That much is sufficient for my needs, and it should help any future readers with the same problem.
Thanks a lot for your kind words dear DGM. Well said.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating, Deleting, and Querying Graphics Objects in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by