回答の前に...
問題をきちんと理解しておりませんが,とりあえず以下のことを仮定しました:
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
10 clear , clc ;
11
12 % データ生成
13
14 time = ( 0 : 0.5 : 10 ) ' ;
15 [ RowSize , ~ ] = size ( time ) ;
16 ColSize = 4 ;
17 sdata0 = zeros ( RowSize , ColSize ) ;
18 for row = 1 : RowSize
19 for col = 1 : ColSize
20 sdata0 ( row , col ) = rand ( ) - 0.5 ;
21 end
22 end
23 clear row col ;
24 sdata1 = abs ( sdata0 * 0.5 ) ;
25
26 % グラフ
27
28 PartName = { 'A' , 'B' , 'C' , 'D' } ;
29 for 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 ( '値' ) ;
38 end
39 clear PartName Name col ;
40 subplot ( 1 , ColSize , ColSize ) ;
41 legend ( '元データ' , '変換後データ' ) ;
42
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。