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!