Datetime 按日期绘图

Datetime 按日期绘图,datetime,octave,Datetime,Octave,我试图通过datetime值绘制一个图表 考虑以下示例CSV(streetnoise.CSV): 所以这只是将街道噪声测量值存储为元组。我想用八度音阶从中画出一个图: # 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 =

我试图通过datetime值绘制一个图表

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

所以这只是将街道噪声测量值存储为元组。我想用八度音阶从中画出一个图:

# 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")
第一个图的内容是可读的:

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

第二个数字是空的:

如何使用datenum值进行打印?后来我想尝试使用datenum解析进行标记,但我甚至没有做到这一点

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

图形与

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


正如matzeri所解释的,这是OpenGL工具包的一个已知问题,原因是浮点(单精度)数据类型。除了使用gnuplot,还有另一个解决方法:从日期中减去1.2018年1月,以便将剩余的日期合并到Single中。请看我在这里的回答,解决相同的问题:我很遗憾地说,自从Octave 4.0选择Qt作为默认工具以来,fltk不是默认工具。但是我仍然在使用cli和fltk@Andy始终在此处使用cli和gnuplot。Fltk在我的系统上有太多问题
graphics_toolkit("gnuplot")