Legend function shows wrong colors.
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Adam
2021 年 1 月 11 日
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.
採用された回答
Walter Roberson
2021 年 1 月 11 日
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')
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Legend についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
