从 CSV 文件在 x 轴上绘制时间戳

问题描述

我正在尝试在 Octave 的 x 轴上绘制带有日期时间的图。日期时间是“yyyy-mm-dd HH:MM”格式的时间戳。我使用 scan2cell 函数从 CSV 文件中读取数据,数据打印在数组中但无法绘制 - 它显示错误:绘图:没有要绘制的数据

%code:
filename = 'Test_12.csv';
data = csv2cell(filename);
time = data (:,2);
y = data (:,3);
plot(time,y)

注意:CSVread 函数以虚构格式打印日期时间! 2021 - 3i 2021 - 3i 2021 - 3i

解决方法

鉴于以下 Test_12.csv 文件:

No,Time,timeToFix
1,2021-03-09 20:02,51
2,2021-03-09 20:14,87
3,2021-03-09 20:16,82
4,2000-01-01 0:03,44
5,2021-03-09 20:21,34
6,2021-03-09 20:31,34

您可以执行以下操作:

  pkg load io   % provides the `csv2cell` function

  Filename    = 'Test_12.csv';
  CsvContents = csv2cell( Filename );
  Headers     = CsvContents(1,:);  % First row contains headers
  Data        = CsvContents(2:end,:);  % Followed by data

% Convert values in cells to desired array format in each case
  Time        = cellfun( @(s) datenum( s,'yyyy-mm-dd HH:MM' ),Data(:,2) );
  TimeToFix   = cell2mat( Data(:,3) );

% Plot
  P = plot( Time,TimeToFix,'o' );

% Touch up plot a tiny bit to make it look nicer
  set( P,'markerfacecolor',[1,0.5,0.5],'markeredgecolor',[0.5,0.25,0.25],'linewidth',2,'markersize',10 )
  grid on
  datetick( 'yyyy-mm-dd' )   % Convert 'datenum' values back to appropriate datestrings
  set( gca,'color',[0.8,0.8,0.8],'gridcolor','w','gridlinestyle',':','gridalpha',1 )