データファイルが上記の形式であると仮定すると、データのtextscan
読み取りに使用できます。
fid = fopen('data.txt','rt');
C = textscan(fid,'%s %s %s %d','Delimiter','.','CollectOutput',1);
fclose(fid);
の最初のセルにC
は文字列(日付の一部)のN行3列のセル配列C
が含まれ、の2番目のセルにはデータ測定値のN行1列のベクトルが含まれます。datenum
最初に3つの小さい文字列を1つの日付文字列に連結してから、次の関数を使用して、測定ごとに日付番号を作成できます。
t = datenum(strcat(C{1}(:,3),'-',C{1}(:,2),'-',C{1}(:,1)));
data = C{2};
t
測定値のベクトルと一致する日付番号のベクトルがdata
できたら、それらをプロットできます。
plot(t,data,'*'); %# Plot the points as asterisks
これで、x軸のラベルを変更して、実際の日付を表示できます。1つのオプションは、関数を使用することです。これは、 stevenの回答datetick
に示されている簡単でエレガントなソリューションです。もう1つのオプションは、関数を使用して自分でラベルを作成し、現在の軸のプロパティとプロパティを変更することです。datestr
XTick
XTickLabel
xpts = min(t):max(t); %# Make a full vector, filling in missing dates
set(gca,'XTick',xpts,'XTickLabel',datestr(xpts)); %# Set axes properties
注: x軸ラベルを日付文字列に変更するためにどのオプションを選択した場合でも、目盛りが近すぎると、ラベルが互いに重なり合うという問題が発生する可能性があります。これを修正するには、x軸に沿って目盛りを減らすか再配置するか(XTick
プロパティを変更する)、またはaxesFontSize
プロパティを調整します。ラベルを回転させてフィットさせる場合は、ラベルを消去して、新しい回転テキストオブジェクトを作成する必要があります。MathWorks File Exchangeに関する次の提出は、まさにそれを行います。