# Legend does not match plot

1 Ansicht (letzte 30 Tage)
André am 22 Jun. 2016
Kommentiert: Walter Roberson am 22 Jun. 2016
I used the following code to generate my plot (and I want it later to include in my LateX document):
clear all; close all; clc;
a1 = 1; a2 = 1; c1 = 2.0; c2 = 1.8; time = 0:0.1:300;
wave1 = a1 * sin(c1*time);
wave2 = a2 * sin(c2*time);
wave3 = wave1 + wave2;
y = hilbert(wave3);
env = abs(y);
bound = 0.1*cos(0.2*time-pi);
plot(time,wave3,'k',time,[-1;1]*env,'--k',time,bound,'-.r', 'Linewidth',1.2);
ylabel(' $\eta$ (m)');
xlabel(' Time (s)');
legend = legend({'Short waves','Wave group envelope','Bound long wave'});
set(legend, 'FontSize',20);
axis([15.7 110 -2.5 2.5]);
set(groot, 'defaultAxesTickLabelInterpreter','latex'); set(groot, 'defaultLegendInterpreter','latex');
The graph looks like:
Clearly, the 'bound long wave' legend does not match the color and line specification in the graph. As far as I know, it has something to do with scalar/vector but I cannot figure out where the error is.
How to proceed further?
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Walter Roberson am 22 Jun. 2016
Inside the plot, time,[-1;1]*env generates two lines, for a total of 4 overall. But you only legend() for three lines. The fix is:
h = plot(time, wave3, 'k', time, [-1;1]*env, '--k', time, bound, '-.r', 'Linewidth', 1.2);
Lh = legend(h([1, 2, 4]), {'Short waves','Wave group envelope','Bound long wave'});
set(Lh, 'FontSize',20);
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

Muhammad Usman Saleem am 22 Jun. 2016
let's fix this bug in your code, replace with this
legend = legend('Short waves','Wave group envelope','Bound long wave');
##### 3 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
Guillaume am 22 Jun. 2016
Indeed, there is absolutely no difference in passing the legend strings as a comma-separated list or as a cell array (or a char array)
Walter Roberson am 22 Jun. 2016
Passing as a cell array can be used to pass in some legend strings that would otherwise be interpreted as options.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Legend finden Sie in Help Center und File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by