![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/546888/image.png)
Add variable legend to a plot without for loop
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kien Pham
am 11 Mär. 2021
Kommentiert: Kien Pham
am 11 Mär. 2021
I am plotting two 201x4 arrays, resulting in four 2-d lines. The y array is a time series so I want the legend to vary accordingly. I created a 1x4 cell with strings that show the time variation of my y variable. However, the result is not satisfactory as shown in the figure below:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/546817/image.png)
My code attempt is below:
lgd = {'HGS 50-year','HGS 100-year','HGS 150-year','HGS 200-year'};
h2 = plot(x,y,'LineWidth',1.25,'DisplayName',char(lgd)');
legend;
I can easily accomplish what I need with a for loop but I do not want to do that because I think I am close to accomplishing what I need without it.
Please help. Thank you.
0 Kommentare
Akzeptierte Antwort
Star Strider
am 11 Mär. 2021
Bearbeitet: Star Strider
am 11 Mär. 2021
This appears to work correctly:
x = 0:0.1:10;
y = exp(-(x-(0:4).').^2)./(1:5).';
figure
plot(x, y)
lgd = {'HGS 50-year','HGS 100-year','HGS 150-year','HGS 200-year'};
legend(lgd)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/546888/image.png)
EDIT — (11 Mar 2021 at 21:34)
Added plot figure.
.
2 Kommentare
Star Strider
am 11 Mär. 2021
Yes.
Try this:
x = 0:0.1:10;
y = exp(-(x-(0:3).').^2)./(1:4).';
ya = exp(-(x-(0:3).'+0.1).^2)./(1:4).';
figure
hv = plot(x, y);
hold on
ha = plot(x, ya, '--k');
hold off
lgd = {'HGS 50-year','HGS 100-year','HGS 150-year','HGS 200-year'};
legend([ha(1); hv],{'Analytical',lgd{:}})
producing:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/546903/image.png)
.
Weitere Antworten (1)
Walter Roberson
am 11 Mär. 2021
Bearbeitet: Walter Roberson
am 11 Mär. 2021
N = 20;
x = 1:N;
y = sort(rand(N,4));
lgd = {'HGS 50-year','HGS 100-year','HGS 150-year','HGS 200-year'};
h2 = plot(x,y,'LineWidth',1.25);
legend(h2, lgd)
3 Kommentare
Walter Roberson
am 11 Mär. 2021
N = 20;
x = 1:N;
y = sort(rand(N,4));
x2 = 1:N;
y2 = sort(rand(N,4));
lgd1 = {'Analytical'};
lgd2 = {'HGS 50-year','HGS 100-year','HGS 150-year','HGS 200-year'};
h1 = plot(x2,y2,'k--','LineWidth',1.25); hold on;
h2 = plot(x,y,'LineWidth',1.25);
hold off;
legend([h1(1); h2], [lgd1, lgd2]);
Siehe auch
Kategorien
Mehr zu Automotive Applications 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!