回答の前に...
問題をきちんと理解しておりませんが,とりあえず以下のことを仮定しました:
- sdata0は元データを,sdata1は変換後データを,それぞれ表す
- 各々のグラフにsdata0を表す赤線とsdata1を表す青線とを重ね描きしたい
- Aデータ~Dデータまで4枚のグラフを同時に出力したい
- sdata0,sdata1の1,2,3,4列目をそれぞれAデータ,Bデータ,Cデータ,Dデータ用の系列とみなした
データ配列は100x50ほどのデータ
という部分を「最終的には50枚のグラフが要るのだろう」と勝手に解釈しました.
解決案
legend()の使い方自体は合っているので,
おそらくはtime,sdata0,sdata1のサイズが誤りであることが原因だと思います.
MATLAB
1% teratail_193351.m
2%{
3 MATLABのグラフ作成の際に2つのデータ群からなるグラフに対して、
4 それぞれの波形に対しての凡例をつけて色分けしたい。
5
6 グラフそのものの波形はそれぞれ赤と青で色分けができたものの、
7 凡例の枠内にある直線はともに赤色の状態で表示された。
8%}
9
10clear, clc;
11
12% データ生成
13
14time = (0 : 0.5 : 10)';
15[ RowSize , ~ ] = size(time);
16ColSize = 4;
17sdata0 = zeros(RowSize,ColSize);
18for row = 1 : RowSize
19 for col = 1 : ColSize
20 sdata0(row,col) = rand() - 0.5;
21 end
22end
23clear row col;
24sdata1 = abs(sdata0 * 0.5);
25
26% グラフ
27
28PartName = {'A', 'B', 'C', 'D'};
29for col = 1 : ColSize
30 subplot(1,ColSize,col);
31 plot(time,sdata0(:,col),'r',time,sdata1(:,col),'b:');
32 Name = [PartName{col},'データ'];
33 title(Name);
34 grid on;
35 xlim([0 10]);
36 xlabel('時間');
37 ylabel('値');
38end
39clear PartName Name col;
40subplot(1,ColSize,ColSize);
41legend('元データ','変換後データ');
42
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。