
Legend option and numbering in boxes
    5 views (last 30 days)
  
       Show older comments
    
y1 = [85 83 82 87; 81 79 84 86; 82 81 89 87; 89 85 87 80; 90 91 85 87];
figure(1), bar(y1,'stacked'); labels = arrayfun(@(value) [num2str(value,'%2.2f'),'%'],y1,'UniformOutput',false);
xticklabels({'NB','BLR','MLP','J48','CART'});  ylabel('\bfAccuracy in %','color','b');
ax = gca;darkGreen = [1,0,1]; ax.XColor = darkGreen; ax.XAxis.FontSize = 10; ax.YAxis.FontSize = 10; ax.FontWeight = 'bold'; hold off
legend({'2500 Dataset','5000 Dataset','7500 Dataset','10000 Dataset'}),legend boxoff
%%  I need legend in 2X2 lines (i.e., 2 Rows & 2 Columns)  AND  values of y1 should be labled inside the corresponding box
0 Comments
Accepted Answer
  Simon Chan
      
 on 23 Jul 2021
        Try the following:
y1 = [85 83 82 87; 81 79 84 86; 82 81 89 87; 89 85 87 80; 90 91 85 87];
figure(1), 
b = bar(y1,'stacked'); 
labels = arrayfun(@(value) [num2str(value,'%2.2f'),'%'],y1,'UniformOutput',false);
xticklabels({'NB','BLR','MLP','J48','CART'});  
ylabel('\bfAccuracy in %','color','b');
%
for k = 1:4
	xtips1 = b(k).XEndPoints;
	ytips1 = b(k).YEndPoints;
	labels1 = string(b(k).YData);
	text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
    	'VerticalAlignment','cap')
end
ax = gca;
darkGreen = [1,0,1]; 
ax.XColor = darkGreen; 
ax.XAxis.FontSize = 10; 
ax.YAxis.FontSize = 10; 
ax.FontWeight = 'bold'; 
hold off
legend({'2500 Dataset','5000 Dataset','7500 Dataset','10000 Da,taset'},'NumColumns',2),legend boxoff

More Answers (1)
  Yazan
      
 on 23 Jul 2021
        You can define the number of columns in the legend object using the property NumColumns. Use the following:
legend({'2500 Dataset','5000 Dataset','7500 Dataset','10000 Dataset'}, 'NumColumns', 2, 'Box', 'off')
0 Comments
See Also
Categories
				Find more on Legend in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

