具有更高时间精度的gnuplot替代方案

2024-05-23 22:43:53 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在使用gnuplot根据时间线绘制数据。然而,时间线的精度是以毫秒为单位的,但是gnuplot似乎只能处理秒。

我已经研究了一些替代方案,但实际上我只需要像gnuplot这样能够处理几秒钟时间的东西。

主脚本使用的编程语言是Python,虽然我看过matplotlib,但它似乎比gnuplot“繁重”得多。由于我不会总是更新图形方面的东西,我想保持它尽可能容易。

有什么建议吗?

更新

我用这个和gnuplot:

set xdata time
set timefmt "%Y-%m-%d-%H:%M:%S"

但是没有%f可获取毫秒。例如,它可以工作:

2011-01-01-09:00:01

但我需要:

2011-01-01-09:00:01.123456

Tags: 数据脚本图形matplotlib时间绘制方案精度
3条回答

您可以使用

set format x '%.6f'

或者(也许,我还没有尝试过,因为我现在更喜欢使用Matplotlib,而且我的机器上没有安装gnuplot):

set timefmt "%Y-%m-%d-%H:%M:%.6S"

(注意与%S格式字符串一起指定的位数)。

更多细节可以在优秀的not so Frequently Asked Questions中找到。

根据它声明的gnuplot 4.6 manual,在“时间/日期说明符”下(gnuplot 4.6pdf的第114页):

%S - second, integer 0–60 on output, (double) on input

这意味着,当读取诸如2013-09-16 09:56:59.412之类的时间戳时,小数部分将作为%S说明符的一部分包括在内。这样的时间戳将通过以下方式正确处理:

set timefmt "%Y-%m-%d %H:%M:%S"
set datafile separator ","
plot "timed_results.data" using 1:2 title 'Results' with lines

并提供如下数据:

2013-09-16 09:56:53.405,10.947
2013-09-16 09:56:54.392,10.827
2013-09-16 09:56:55.400,10.589
2013-09-16 09:56:56.394,9.913
2013-09-16 09:56:58.050,11.04

我使用gnuplot的目的是相同的,我的输入看起来像:

35010.59199100101
35010.76560100110
35011.05703100200
35011.08119100110
35011.08154100200
35011.08158100200
35011.08169100200
35011.10814100200
35011.16955100110
35011.16985100200
35011.17059100200号

第一列是午夜后的秒数,逗号后是纳秒部分。您可以将其保存在csv文件和gnuplut do中:

set datafile separator ','
plot "test.csv" using 1:3 with lines

相关问题 更多 >