データ消えたら嫌なので, ,
全部の凡例を表示する方法が苦労しました;
タグ:
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
全部の凡例を表示する方法が苦労しました;
タグ:
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徹明けの頭が回ってないアホにも理解できるように, できるだけ簡潔に答えください or2
オブジェクトのハンドル番号が生成されるみたいです. .
通常の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);
簡単にまとめれば,
プロットしたデータにナンバーを振ることができるので,
そのナンバーを使って凡例を表示したってことかな. .