I could not display all the legends related to the plotted bars
    5 ビュー (過去 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!


