gpt4 book ai didi

time - Gnuplot 使用部分日期列/除以天数

转载 作者:行者123 更新时间:2023-12-01 01:04:43 24 4
gpt4 key购买 nike

我有一个这样的数据文件:

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

例如。:
gnuplot> set xdata time
gnuplot> set timefmt '%d/%m/%Y'
gnuplot> set term dumb
Terminal type set to 'dumb'
Options are 'feed size 79, 24'
gnuplot> plot 'test.dat' u 1:($2/$1) w l



30 +++-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+++
+ + + + + + + 'test.dat' u 1:($2/$1) ********
29 ++ ***++
| *** |
28 ++ *** ++
| *** |
27 ++ *** ++
| *********** |
26 ++ *** ++
25 ++ * ++
| ** |
24 ++ * ++
| **** |
23 ++ *** ++
| * |
22 ++ ** ++
| * |
21 ++ * ++
+ + + ********* + + + + + + + +
20 +++-+-*********-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+++
01/11/12/12/12/01/13/02/1303/13/04/13/05/13/06/13/07/1308/13/09/13/10/13/11/13

理性:相信 set xdata time条款实际上只适用于使用规范的第一部分。当您达到使用规范的第二部分 ( $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) ),然后我们根据我们的时间格式( strptime( ... ) )将其读取为时间。最后,您可以使用 tm_mday由于 strptime 完成了将数据转换为 tm_mday 格式的所有艰苦工作,因此在它上面起作用。需要。

1请注意,我的上述假设也解释了您在原著中看到的行为。如 $1总是返回字符串的日期部分,然后 tm_mday总是看到 1 到 31 之间的数字。因为 tm_mday期望参数为自 2000 年 1 月 1 日以来的秒数,这一天总是 1 (例如 Jan 1 ,2000 加上 ~30 秒。)。因此,除以它对情节没有任何影响。

关于time - Gnuplot 使用部分日期列/除以天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19802737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com