Home > other >  How to show the legend of zero values as a line in the legend?
How to show the legend of zero values as a line in the legend?

Time:11-27

I have below the following example, which shows the bars for the following vectors:

% % For Phi/Psi =  /-10
CoverageArea_mean_10 = [84.4735,21.1779,6.4247,2.1416]; 
CoverageArea_min_10 = [98.5128,21.1779,6.9007,2.1416]; 
CoverageArea_max_10 = [70.1963,19.0363,5.9488,2.1416];
% For Phi/Psi =  /-40
CoverageArea_mean_40 = [0,4.5211,2.3795,0]; 
CoverageArea_min_40 = [92.5640,21.1779,6.9007,2.1416]; 
CoverageArea_max_40 = [0,0.4759,0.2380,0]; 

as shown below enter image description here

The problem is there are some zero values, and I need them to be represented as a line on the legend. How can I fix it?

The expected results:

enter image description here

%% Plotting the coverage area
x = [15,30,45,60];
figure
COVERAGE = [CoverageArea_min_10;CoverageArea_mean_10;CoverageArea_max_10];
COVERAGEAREA = [COVERAGE(:,1)';COVERAGE(:,2)';COVERAGE(:,3)';COVERAGE(:,4)'];
bar(x,COVERAGEAREA);
xlabel( 'Semi-angle at half power, \Phi_1_/_2 (°)' );
ylabel('Coverage area (m²)');
BarNames = {'min','mean','max'};
legend(BarNames,'Location','best');
grid on;
figure
COVERAGE1 = [CoverageArea_min_40;CoverageArea_mean_40;CoverageArea_max_40];
COVERAGEAREA1 = [COVERAGE1(:,1)';COVERAGE1(:,2)';COVERAGE1(:,3)';COVERAGE1(:,4)'];
bar(x,COVERAGEAREA1);
xlabel( 'Semi-angle at half power, \Phi_1_/_2 (°)' );
ylabel('Coverage area (m²)');
BarNames = {'min','mean','max'};
legend(BarNames,'Location','best');
grid on;

CodePudding user response:

Is this what you want?

      close all; clear all;
% Create figure
figure1 = figure('WindowState','maximized');

% Create axes
axes1 = axes('Parent',figure1);
hold(axes1,'on');

% Create multiple lines using matrix input to bar
% % For Phi/Psi =  /-10
CoverageArea_mean_10 = [84.4735,21.1779,6.4247,2.1416]; 
CoverageArea_min_10 = [98.5128,21.1779,6.9007,2.1416]; 
CoverageArea_max_10 = [70.1963,19.0363,5.9488,2.1416];
% For Phi/Psi =  /-40
CoverageArea_mean_40 = [0,4.5211,2.3795,0]; 
CoverageArea_min_40 = [92.5640,21.1779,6.9007,2.1416]; 
CoverageArea_max_40 = [0,0.4759,0.2380,0]; 
%% Plotting the coverage area
x = [15,30,45,60];

COVERAGE = [CoverageArea_min_10;CoverageArea_mean_10;CoverageArea_max_10];
COVERAGE1 = [CoverageArea_min_40;CoverageArea_mean_40;CoverageArea_max_40];
COVERAGEAREA1 = [COVERAGE1(:,1)';COVERAGE1(:,2)';COVERAGE1(:,3)';COVERAGE1(:,4)'];
COVERAGEAREA = [COVERAGE(:,1)';COVERAGE(:,2)';COVERAGE(:,3)';COVERAGE(:,4)'];

bar1 = bar(x,COVERAGEAREA1,'Parent',axes1);
set(bar1(3),'DisplayName','min');
set(bar1(2),'DisplayName','mean');
set(bar1(1),'DisplayName','max');

% Create ylabel
ylabel('Coverage area $(m^2)$','Interpreter','latex');

% Create xlabel
xlabel('$\phi_{1/2}$','Interpreter','latex');

box(axes1,'on');
grid(axes1,'on');
hold(axes1,'off');
% Set the remaining axes properties
set(axes1,'XTick',[15 30 45 60]);
% Create legend
legend1 = legend(axes1,'show');
set(legend1,'Interpreter','latex','AutoUpdate','off','Location','best');

% Create rectangle
annotation(figure1,'rectangle',...
    [0.854166666666666 0.861889927310488 0.0223958333333336 0.0290758047767393],...
    'Color',[1 1 1],...
    'FaceColor',[1 1 1]);

% Create line
annotation(figure1,'line',[0.8578125 0.873958333333333],...
    [0.881619937694704 0.881619937694704]);

% Create line
annotation(figure1,'line',[0.858333333333333 0.8734375],...
    [0.867082035306334 0.867082035306334]);
  • Related