質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

1回答

2750閲覧

MATLABでの凡例の色分けがうまくできない

pypypy.bom

総合スコア31

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

0クリップ

投稿2019/06/05 13:51

#解決したいこと
・MATLABのグラフ作成の際に2つのデータ群からなるグラフに対して、それぞれの波形に対しての凡例をつけて色分けしたい。

#試したこと
下記のプログラムを実行しました。

matlab

1%グラフ 2for col = 1:4 3 PartName = {'A', 'B', 'C', 'D'}; 4 Name = [PartName{col}, 'データ']; %グラフ名 5 figure 6 plot(time(:, 1), sdata0(:, 2:p), 'r', time(:, 1), sdata1(:, 2:p), 'b') 7 grid on 8 title(Name); 9 xlim([0 100]) 10 xlabel('時間') 11 ylabel('値') 12 legend('元データ', '変換後データ') 13end

データ配列には、それぞれ100×50ほどのデータが格納されており、
各列ごとに波形を表示するようにプログラムを組んでいます。
#結果
グラフそのものの波形はそれぞれ赤と青で色分けができたものの、
凡例の枠内にある直線はともに赤色の状態で表示された。

#実行環境
MATLAB2018a

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答の前に...

問題をきちんと理解しておりませんが,とりあえず以下のことを仮定しました:

  • 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

実行例

投稿2019/08/30 03:27

編集2019/08/30 03:28
obeSolitary

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問