TimeSeriesPlot FRONT PAGE
最終更新日:2022/11/09

コレは何?/What is this?

実験データファイルをMATLABでプロットして、論文クオリティのグラフを描画するためのMATLABクラス。 通常のMATLABの「subplot」で多段の時系列グラフを描画させると、時間軸分のスペースが非常に取られて、論文のスペース効率が悪化する。 そこで、時系列データに特化したグラフ描画のためのコードをクラスとしてまとめて実装して、 最下段のグラフにのみ時間軸分のラベルを表示するようにし、各グラフの段間のスペースを詰めた多段グラフを簡単に描けるようにしました。 あと、論文上での可読性向上のために、プロットを重ねたときの色使いと線の太さ、フォント、フォントサイズをデフォルトで設定してあります。

ダウンロード/Download

下記から「TimeSeriesPlot」とサンプルコードをDLできます。

プロットの例/Example of Plot

スクリプトの書き方とそれに対応するプロットを下記に記載しておきます。 必要なプロット形態に合わせて、自由に改変して下さい。

プロット平面3段版のサンプルコード 出力結果
 % CSVファイル名設定
 FileName = 'DATA.csv';

 % CSVファイルから変数値読み込み
 CsvData = readmatrix(FileName,'FileType','text');
 t  = CsvData(:,1);	% [s] 時刻ベクトル
 A1 = CsvData(:,2);	% 変数A-1
 A2 = CsvData(:,3);	% 変数A-2
 A3 = CsvData(:,4);	% 変数A-3
 B1 = CsvData(:,5);	% 変数B-1
 B2 = CsvData(:,6);	% 変数B-2
 C = CsvData(:,7);	% 変数C
 tlen = length(t);
 clear CsvData;
 
 % グラフ時間軸オフセット
 t = t - 0;
 
 % グラフ描画
 figure(1);
	% 時系列プロット全体の設定
	Graph = TimeSeriesPlot(gcf);		% 時系列プロット生成
	Graph.FigurePosition(100, 50);		% グラフ位置の設定(左[px], 下[px])
	Graph.FigureSize(900, 700);		% グラフサイズの設定(幅[px], 高さ[px])
	Graph.NumOfPlanes(3);			% プロット平面の段数
	Graph.ReductionRate(1);			% データ削減ための間引き数
	Graph.LoadTimeData(t);			% 時刻データ読み込み
	Graph.TimeRange(0, 0.1, 1);		% 描画する時刻範囲の設定
	Graph.TimeLabel('Time [s]');		% 時間軸のラベル名
	% プロット1段目
	Graph.StairsPlot3(A1, A2, A3);			% 階段プロットの例
	Graph.AxisLabel({'(a)','Axis Name A [unit]'});	% 縦軸ラベルの設定
	Graph.ManualGrid(-1.5,0.5,1);			% 手動範囲&手動グリッド設定する場合
	Graph.Legend3('A1','A2','A3','SouthWest');	% 凡例の設定
	% プロット2段目
	Graph.LinePlot2(B1, B2);			% 線プロットの例
	Graph.AxisLabel({'(b)','Axis Name B [unit]'});	% 縦軸ラベルの設定
	Graph.ManualGrid(-1,0.5,1);			% 手動範囲&手動グリッド設定する場合
	Graph.Legend2('B1','B2','NorthEast');		% 凡例の設定
	% プロット3段目
	Graph.StairsPlot1(C);				% 階段プロットの例
	Graph.AxisLabel({'(c)','Axis Name C [unit]'});	% 縦軸ラベルの設定
	Graph.ManualGrid(-0.5,0.1,0.5);			% 手動範囲&手動グリッド設定する場合
 Graph.SavePNGandEPS(FileName);				% PNG画像とEPSファイルを生成

制約/Constraints

1つのプロット平面の段には、プロットの線は3本までの重ね書きを想定しています。 理由は、4本以上の線を重ねると論文上での可読性が著しく下がり、査読者をイラつかせることになるので。 (どうしても4本以上重ねたいときは、クラス内のStairsPlot3関数、LinePlot3関数を改造すれば簡単にできます)

既知のバグ/Known Bugs

プロット平面の段数が多く、尚且つグラフの高さが低い場合では、時間軸ラベル("Time [s]"など)が下の方に見切れてしまうことがあります。 そのときは、グラフの高さを大きくして下さい。