goo blog サービス終了のお知らせ 

M.O.S.な日々

なんとなくな日

Matlab で連番のCSVを読み込んでグラフにする

2011-01-25 15:01:33 | 研究
データ消えたら嫌なので, ,

全部の凡例を表示する方法が苦労しました;

タグ:
matlab, 2軸グラフ, plotyy, 連番CSV 読み込み, グラフ作成,
全凡例を表示, 指定フォルダに保存

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2つの値をグラフに表示する
% 凡例 軸の表示範囲を指定 2011.1.25
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all;
close all;

% データ
%連続ファイル名の定義
%NUM = 1;%ファイル番号
name = 'hoge-';
c = '.csv';
fol ='fig/';

for NUM = 1:11;%1から1刻みで11まで
no = num2str(NUM);
data = csvread(strcat(name,no,c),1,0)%,[1,0,79,3]); %データ読み込み
%値をそれぞれ代入
data_aaaa = data(:,1); %1列目のデータ
data_bbbb = data(:,2); %2列目のデータ
data_cccc = data(:,3);
data_dddd = data(:,4);
data_eeee = data(:,5);
%色の種類
%yellow(y), magenta(m), cyan(c), red(r), green(g), blue(b), white(w),
%black(k)
% 以下グラフ作成 ============
%-------------------------------------
% グラフ
%-------------------------------------
%plot(data_X,data_Y)
figure(NUM);
%左右の基準となるデータを挿入
%左:リンク角度, 右:加速度
[AX,H1,H2] = plotyy(data_aaaa,data_bbbb,data_aaaa,data_eeee,'plot');
% 軸の表示範囲を指定
ylim(AX(1),[-10 60])
ylim(AX(2),[-25 10])
xlim(AX(1),[2.5 5])
xlim(AX(2),[2.5 5])
% ラベルを自動で設定するように変更
set(AX(1),'YTickMode','Auto')
set(AX(2),'YTickMode','Auto')
%線色を指定
set(H1,'color','r');
set(H2,'color','k');
%オブジェクトのハンドル番号を記録
Han1 = H1;
Han2 = H2;
%左軸に図を追加
hold(AX(1),'on')
%オブジェクトのハンドル番号を記録
Han3 = plot(data_aaaa,data_cccc,'-b');
Han4 = plot(data_aaaa,data_dddd,'-g');
%x軸のタイトル
xlabel('Time [sec]');
%y軸のタイトル
set(get(AX(1),'Ylabel'),'String','hoge[deg]')
set(get(AX(2),'Ylabel'),'String','hogera[m/s^2]')
%凡例を表示
legend([Han1;Han3;Han4;Han2],'Target','ENC1','ENC2','Acc',4);
%-1 :境界の外側, 0 :できるだけ不明瞭な点がないように, 1 :右上隅(デフォルト)
%2 :左上隅, 3 :左下隅, 4 :右下隅, [XlowerLeft YlowerLeft]:正規化された座標内
title(strcat(name,num2str(NUM)));
saveas(figure(NUM),strcat(fol,name,num2str(NUM)),'fig');
saveas(figure(NUM),strcat(fol,name,num2str(NUM)),'eps');
saveas(figure(NUM),strcat(fol,name,num2str(NUM)),'jpg');
end


最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
結局の所何が原因だったんですか? (ハンクラ)
2011-01-26 08:52:36
自分がよくやる方法と違いすぎてて,
よくわからなくなってしまったので,

2徹明けの頭が回ってないアホにも理解できるように, できるだけ簡潔に答えください or2
返信する
返信 ()
2011-01-26 13:30:55
Matlab で線を描いたりしたときに
オブジェクトのハンドル番号が生成されるみたいです. .

通常のPLOT では
Han3 = lot(data_aaaa,data_cccc,'-b');

でハンドル番号(Han3)が記録されるようで, ,

今回使ったは PLOTYY では自動的にハンドル番号が振られます.
[AX,H1,H2] = plotyy(data_aaaa,data_bbbb,data_aaaa,data_eeee,'plot');

この場合はdata_bbbb のハンドル番号がH1, data_eeee のハンドル番号がH2 となります.

ただ, この後グラフを追加してしまうと
ハンドル番号が上書きされてしまうかも・・・・
と思ったのでハンドル番号をHan**に保存するようにしました.

%オブジェクトのハンドル番号を記録
Han1 = H1;
Han2 = H2;

多分, , 上記のハンドル番号を記録する操作は無いと思います. .

あとは, それぞれのハンドル番号に合わせて凡例を表示するようにしてます.
%凡例を表示
legend([Han1;Han3;Han4;Han2],'Target','ENC1','ENC2','Acc',4);


簡単にまとめれば,
プロットしたデータにナンバーを振ることができるので,
そのナンバーを使って凡例を表示したってことかな. .
返信する

コメントを投稿