I could not display all the legends related to the plotted bars
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ilyes louahem m'sabah
am 24 Mär. 2024
Beantwortet: Dyuman Joshi
am 24 Mär. 2024
When i run the simple code below i get the following error:
Warning: Ignoring extra legend entries.
> In legend>set_children_and_strings (line 643)
In legend>make_legend (line 328)
In legend (line 254)
In Data_calculation (line 18)
-------------Code-----------------
x=1:5;
y=[4.65,31.41,3.92,4.23,0.47];
b=bar(x,y,0.5,'stacked')
grid on
ylabel('Output energy of the HRES components (MWh/year)')
set(gca, 'XTickLabel',{'PV','WT','Batt','DG','excess'}) %labeling x-axis
legend('PV','WT','Batt','DG','excess') %<-----------------% this is line 18
0 Kommentare
Akzeptierte Antwort
Dyuman Joshi
am 24 Mär. 2024
You get a single legend entry because there is only a single graphical object.
If you want a separate legend for each bar, you need to plot them as separate bar objects.
One appoach to obtain that is as follows -
x=1:5;
y=[4.65,31.41,3.92,4.23,0.47];
%Modification
z = diag(y,0)
%Modified call to bar()
b=bar(x,z,0.5,'stacked')
As you can see, now there are 5 Bar objects created.
grid on
ylabel('Output energy of the HRES components (MWh/year)')
set(gca, 'XTickLabel',{'PV','WT','Batt','DG','excess'}) %labeling x-axis
legend('PV','WT','Batt','DG','excess') %<-----------------% this is line 18
0 Kommentare
Weitere Antworten (1)
Walter Roberson
am 24 Mär. 2024
When y is an array, then one legend entry is created for each column of y
When y is a vector, then one legend entry total is created.
Legend entries are not created for each bar -- that's the role of the XTickLabel
x = 1:5;
y = rand(5,2);
b = bar(x,y,0.5,'stacked');
legend show
0 Kommentare
Siehe auch
Kategorien
Mehr zu Legend finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!