Gnuplot 时间范围限制

Gnuplot time range limit

$data << EOD
1563619139 10
1532083139 9
1500547139 8
1469011139 7
1437388739 6
1405852739 5
1374316739 4
1342780739 3
1311158339 2
1279622339 1
EOD

set terminal png
set xdata time
set timefmt "%s"
set format x '%Y'
unset key
plot '$data' u 1:2

如何仅绘制 2015 年的值?我通过 docs 尝试了 plot ["2015":] '$data' u 1:2 但它没有按预期工作。

我知道我可以编辑 $data,但我不想那样做。

您必须使用与timefmt相同的格式来指定范围。

plot ["1420092000":] '$data' u 1:2

Gnuplot 中的秒数是从 1970 年开始计算的。 我计算的开始时间考虑了一年中的 365.25 天,因此是 1420092000 秒,但是使用 strptime("%Y","2015"),正如另一个答案中所报告的,无疑更正确和精确。 您可以添加

set xtics 31557600

只有与年初相对应的主要抽搐。指定的值是必须以秒为单位给出的抽动之间的时间增量。

时间数据有较旧和较新的 gnuplot 语法。 下面的示例使用较新的语法。 检查 help time/datehelp timecolumnhelp strptime

代码:

### time data
reset session

$Data << EOD
1563619139 10
1532083139 9
1500547139 8
1469011139 7
1437388739 6
1405852739 5
1374316739 4
1342780739 3
1311158339 2
1279622339 1
EOD

unset key
set format x "%Y" time

StartTime = strptime("%Y","2015")   # 2015-01-01 00:00:00 in seconds after 1970
set xrange[StartTime:]
set xtics StartTime, 3600*24*365    # start time and major tic distance one year in seconds

plot $Data u (timecolumn(1,"%s")):2 w lp pt 7
### end of code

结果: