MatlabとGMTで折れ線グラフを描く
学生時代からGMT(The Generic Mapping Tools)に馴染んできたが,新天地ではMATLABが主流環境ということで,同じ図面を描くことで練習を実行.GMTもこれまで使っていたバージョンから上がった関係で復習.
In case of GMT
2列のデータを読み取り,折れ線グラフを描きたい
awk ‘{print $1,$2}’ gmt.txt | gmt psxy -R$rangeSW -JX12/10 -Bx$afgS+l”$labelS” -By$afgW+l”$labelW” -BWSne -Sc0.05 -G0/0/0 -W1,0/0/0 -K > gmt1.eps
awk:ファイルを読み込む
gmt psxy: 折れ線グラフ -Rで範囲指定(ここでは予め用意したrangeSWを読んでいる),-JXでxy座標軸,-Bで軸(x&y;ここでは予め指定したaやgの値を読んでいる),-Sc: プロットする点について,-G: 点の色(RGBで指定;ここでは黒),-W: 線の太さ,色,-K: この後にGMTのコマンドが続く場合は必要
GMTのバージョンが前のもの(4系など)を使う場合は,コマンドの前にgmtが要らなかったが(gmt psxy等),ver.5系では必要
In case of MATLAB
新たに学んでいるMATLABでも同じグラフを描きたい
ifile{1} = ‘./ichi.txt’;
ifile{2} = ‘./ni.txt’;
for i = 1:1:length(ifile)
fid = fopen(ifile{i});
fmt = ‘%f%f’;
dataorg{i} = cell2mat(textscan(fid,fmt,’Delimiter’,’,’));
fclose(fid);
end
ichi = dataorg{1,1};
ni = dataorg{1,2};
plot(ichi(:,1),ichi(:,2),’k–‘)
set(gca,”FontSize”,fontsize,”FontName”,font)
grid on
grid minor
hold on
plot(ni(:,1),ni(:,2),’r’)
hold off
上の例ではichiとniの二つの例で二本の折れ線グラフを描いているが,もしより多くのテキストファイルを読むことになってもfor文にしておけば後々の処理が楽になる.またその際には,textscanで読んだファイル達をcell2matしておくと,取り出してくるときに分かりやすい