Legend function shows wrong colors.

Hi, i want to plot my curves with respect to time. However legend function assigns wrong color values to wrong colors. That is, it does not name them with the order gave to it.
Thanks for the help!
clc
clear all
close all
k_a=1/8;
k_b=0.2;
k_c=4;
k_g=0.1;
k_w=0.2;
h=0.2;
ti=0;
tf=100;
T=ti:h:tf;
S=zeros(length(T));
E=zeros(length(T));
I=zeros(length(T));
M=zeros(length(T));
R=zeros(length(T));
%%Some code.
plot(T,S)
hold on
plot(T,E)
hold on
plot(T,I)
hold on
plot(T,M)
hold on
plot(T,R)
hold on
legend('Suceptibles','Exposed','Infected','Medicaly Semptomatic','Recovered')

2 Commenti

Adam
Adam il 11 Gen 2021
It would help if you posted the result of doing all that so we can see what the legend looks like. It seems fine to me when I run it.
Thanks! Walter pointed out my mistake.

Accedi per commentare.

 Risposta accettata

zeros(length(T)) is the same as zeros(length(T), length(T)) which is a 2D array.
k_a=1/8;
k_b=0.2;
k_c=4;
k_g=0.1;
k_w=0.2;
h=0.2;
ti=0;
tf=100;
T=ti:h:tf;
S=zeros(size(T));
E=zeros(size(T));
I=zeros(size(T));
M=zeros(size(T));
R=zeros(size(T));
S(1)=10000;
E(1)=10;
I(1)=0;
M(1)=0;
R(1)=0;
for i=1:length(T)-1
S(i+1)=S(i)-h*((k_c*k_b*I(i)*S(i))/(S(i)+E(i)+I(i)+M(i)+R(i)));
E(i+1)=E(i)+h*((k_c*k_b*I(i)*S(i))/(S(i)+E(i)+I(i)+M(i)+R(i))-(k_a*E(i)));
I(i+1)=I(i)+h*((k_a*E(i))-(k_g*I(i)));
M(i+1)=M(i)+h*((k_g*I(i))-(k_w*M(i)));
R(i+1)=R(i)+h*((k_w*M(i)));
end
plot(T,S, 'b.-')
hold on
plot(T,E, 'k*-')
hold on
plot(T,I, 'r+-')
hold on
plot(T,M, 'c^-')
hold on
plot(T,R, 'gv-')
hold on
legend('Suceptibles','Exposed','Infected','Medicaly Semptomatic','Recovered')

1 Commento

Thank you, So my mistake was defining NxN matrices instead of 1xN vectors.

Accedi per commentare.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by