1

matlab で値をプロットしようとしています。

私のcsvファイルは次のようになります。

> 15.12.2012 11:27; 0.9884753
> 15.12.2012 11:12; 10.670.642
> 15.12.2012 10:57; 114.455.145
> 15.12.2012 10:42; 101.301.446
> 14.12.2012 10:27; 0.99031037
> 14.12.2012 10:12; 104.594.388
> 14.12.2012 09:57; 0.97192177
> 14.12.2012 09:42; 0.8925
> 14.12.2012 09:27; 0.8985693
> 14.12.2012 09:12; 0.955
> 14.12.2012 08:57; 0.95103529
> 13.12.2012 08:42; 0.95203444
> 13.12.2012 08:27; 0.955
> 13.12.2012 08:12; 0.95970876
> 13.12.2012 07:57; 0.95929422
> 13.12.2012 07:42; 0.95578656
> 13.12.2012 07:27; 0.955
> 12.12.2012 07:12; 0.955
> 12.12.2012 06:57; 0.95342687
> 12.12.2012 06:42; 0.955
> 12.12.2012 06:27; 0.955
> 12.12.2012 06:12; 0.95930485
> 11.12.2012 05:57; 0.95530825
> 11.12.2012 05:42; 0.96452381
> 10.12.2012 05:27; 0.9675
> 10.12.2012 05:12; 0.98778061
> 10.12.2012 04:57; 102.982.993

私は「11.12.2012 04:57」を読んでいます。文字列として、datvec を使用します。

[Y、M、D、H、MN、S] = datevec('文字列')

もう一度明確にするために

Col1=String  % [Y, M, D, H, MN, S]
Col2= number % [0.9884753;...;102.982.993]

ここで、最初の Col1 ([Y, M, d].

plot (Col2)

できます 。サンプル データでは、同じ日に複数の値があります1 日に 1 回だけ表示される日付でプロットにラベルを付けるにはどうすればよいですか。

よろしく、

4

4 に答える 4

1

次のように、一連のカスタム ティックを設定します。

startTicks=find([false diff(D)~=0]); % This is a bit of a hack, but will show you anytime the day has changed. Might be confused if you jump a month at a time.
plot(Col2)
set(gca,'XTick',startTicks)
set(gca,'XTickLabel',Col1(startTicks));
于 2012-12-11T18:35:38.470 に答える
1

以下にリストされているようなことを行うことができます。日付文字列はそれほど短くないため、( rotateticklabelを使用して) 回転させてレンダリングすると見栄えがよくなります。

str = {
  '15.12.2012 11:27';
  '15.12.2012 11:12';
  ...
  '10.12.2012 04:57'
};

num = [
  0.9884753;
  10.670642;
  ...
  102.982993
];

% find first occurrence of dates
[y,m,d,h,mn] = datevec(str,'dd.mm.yyyy HH:MM');
dn = datenum(y,m,d);
[~,ind] = unique(dn,'first');
ind = sort(ind);

% plot it nicely
plot(num);
ax = gca;
dstr = cellstr(datestr(dn,'dd.mm.yyyy'));
set(ax, 'XTick',ind, 'XTickLabel',dstr(ind), 'Position',[0.1,0.15,0.8,0.75]);
rotateticklabel(ax, 30);

そして、これはあなたが得ることができるものです: ここに画像の説明を入力

于 2012-12-11T18:51:46.530 に答える
0

datenumの代わりに使用しdatevecて、日付値の単一セットを取得し、それらをプロットしてから を使用しますdatetick。たとえば、上記の最後の 3 点を取り上げます。

date_str = {'10.12.2012 05:27' '10.12.2012 05:12' '10.12.2012 04:57'};
y = [0.9675 0.98778061 102.982];

x = datenum(date_str, 'dd.mm.yyyy HH:MM');

plot(x,y);
datetick x

注: 2 番目の列に 2 つのドットが付いた数字があります (例: "10.670.642" と "114.455.145")。それらが何であるかはわかりませんが(おそらく数千の区切り文字ですか?)、それらを処理する必要があります。上記のコードはそれらでは機能しません。

于 2012-12-11T18:32:56.143 に答える
0

http://www.mathworks.de/de/help/matlab/ref/timeseries.plot.html

時系列のプロットが探しているものです。最初の例を確認してください。

于 2012-12-11T18:15:06.017 に答える