I could not display all the legends related to the plotted bars
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
Dyuman Joshi
2024년 3월 24일
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
추가 답변 (1개)
Walter Roberson
2024년 3월 24일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Legend에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!