按日期编号绘制

时间:2018-12-17 16:29:12

标签: datetime octave

我正在尝试通过日期时间值绘制图形。

考虑以下示例CSV(streetnoise.csv):

datetime,noise level
2018-12-03 03:31:12.592,10
2018-12-03 03:31:15.832,10
2018-12-03 03:31:17.062,11
2018-12-03 03:31:19.292,12
2018-12-03 03:31:23.532,11
2018-12-03 03:31:25.762,10
2018-12-03 03:31:26.002,23
2018-12-03 03:31:28.242,10
2018-12-03 03:31:34.492,10
2018-12-03 03:31:34.722,9

因此,这仅将街道噪声测量结果存储为元组。我想使用八度从中绘制一个图:

# Load the data
pkg load io
csv_data = csv2cell("streetnoise.csv")

# Parse the datetimes
datevalues = datenum(csv_data(2:end,1), "yyyy-mm-dd HH:MM:SS.FFF")
seconds = (datevalues - datevalues(1)) * 24 * 60 * 60

# Get noise levels
noiseLevels = [csv_data{2:end,2}]

# Plot by seconds since start
h = figure(1)
plot(seconds, noiseLevels)
title("Levels per seconds")
xlim([min(seconds) max(seconds)])

# Plot by datenum
i = figure(2)
plot(datevalues, noiseLevels)
title("Levels per datevalues")

第一个数字的内容可读:

Working

但是,这并不是真正可以理解的,因为读者必须知道何时开始测量并计算时间。

第二个数字只是空的:

Not working

如何绘制datenum值?我本来想尝试对datenum进行解析以进行标记,但是我什至没有走这么远。

当我添加xlim([min(datevalues) max(datevalues)])时,只能看到y轴。

1 个答案:

答案 0 :(得分:2)

该图适用于

graphics_toolkit("gnuplot")

默认的“ fltk”图形工具包使用数字作为“单个”,并且没有足够的数字来表示 区分日期之间以秒为单位的差异。 Gnuplot使用“ double”并且可以区分

enter image description here