Time Gnuplot使用部分日期列/除以天

Time Gnuplot使用部分日期列/除以天,time,gnuplot,Time,Gnuplot,我有这样一个数据文件: 30/11/2012 600.00 31/12/2012 620.00 31/01/2013 640.00 28/02/2013 580.00 31/03/2013 720.23 30/04/2013 710.26 31/05/2013 800.54 30/06/2013 786.58 31/07/2013 821.82 31/08/2013 854.91 30/09/2013 849.17 31/10/2013 910.26 我想绘制这个数据,以第1列作为x轴,在y轴

我有这样一个数据文件:

30/11/2012 600.00
31/12/2012 620.00
31/01/2013 640.00
28/02/2013 580.00
31/03/2013 720.23
30/04/2013 710.26
31/05/2013 800.54
30/06/2013 786.58
31/07/2013 821.82
31/08/2013 854.91
30/09/2013 849.17
31/10/2013 910.26
我想绘制这个数据,以第1列作为x轴,在y轴上:“第2列除以第1列中的天数”。但我不知道如何提取这些日子。 这是我尝试过的,但似乎不起作用,也就是说,我得到的图形与绘制1与2的图形完全相同:

set xdata time
set timefmt "%d/%m/%Y"
plot 'data.csv' u 1:($2/tm_mday($1)) w l

感谢您的帮助。

我觉得这不可能是预期的行为,但对于您的特定情况(因为日期是第一天),您可以:

plot 'test.dat' u 1:($2/$1) w l
e、 g:

Rational:我相信
setxdata-time
子句实际上只适用于using规范的第一部分。当您点击using规范的第二部分(
$2/$1
)时,gnuplot将恢复正常解释一切。正常使用的解析器非常宽容,因此当它看到
30/11/2012
时,它只接受它知道如何处理的东西--
30
,而默默地忽略其余部分


根据上述假设1,我得出以下结论:

plot 'test.dat' u 1:($2/tm_mday(strptime('%d/%m/%Y', strcol(1)))) w l
首先,我们需要告诉gnuplot第1列中的内容是一个字符串(
strcol(1)
),然后根据时间格式(
strtime(…)
)将其读取为时间。最后,您可以在其上使用
tmmday
函数,因为strtime做了所有艰苦的工作,将数据转换为
tmmday
所需的格式


1请注意,我的上述假设也解释了您在原文中看到的行为。如果
$1
总是返回字符串的日期部分,那么
tm_mday
总是看到一个介于1和31之间的数字。由于自2000年1月1日起,
tm\mday
希望参数为秒,因此日期始终为
1
(例如,2000年1月1,再加上~30秒)。所以,除以它在情节上没有任何区别。

问得好。我被难住了几分钟。我不确定在此之前我是否使用过哑终端。。。我的新笔记本电脑没有安装任何合理的交互式终端,因此
dumb
似乎是最好的选择…奇妙的解释@mgilson-我不敢相信我没有试过2美元/1美元。“哑”输出看起来足够好,再次学到了一些东西:-)
plot 'test.dat' u 1:($2/tm_mday(strptime('%d/%m/%Y', strcol(1)))) w l