如何可视化时间序列数据?

max*_*zig 8 software-rec

我有一些时间序列数据,我想将其可视化为二维图。

输入是 ISO-date-format 和由空格分隔的值,每行一条记录:

2010-10-21 23
2010-10-22 32
etc.
Run Code Online (Sandbox Code Playgroud)

输出应该是一个漂亮的二维图。基本要求:

  • 输出到 X11 窗口(作为预览)和 png 文件
  • x轴必须了解日期并自然缩放数据,例如3天之间的差距应该是1天之间差距的三倍
  • 应该可以从脚本中调用
  • 输出不错,使用方便

奖金:

  • svg 输出

我试过了gnuplot,它有效——它有一些日期支持:

gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot "test.dat" using 1:2
Run Code Online (Sandbox Code Playgroud)

但是我对 gnuplot 有一些问题:

  • 使用默认设置图看起来非常难看
  • 在手册中很难找到内容 - 例如,在绘制点时如何使用小的实心圆圈而不是默认的“+”号?
  • gnuplot shell 令人头疼——它不使用 readline,它坏了,命令完成是个笑话,我不知道如何启用 vi 快捷方式——或者如果它们受支持,反向搜索怎么样等等。

因此我的问题是:可视化时间序列数据的替代方法是什么?

还是我夸大了 gnuplot 问题?

War*_*ung 12

R在这类事情上比 Gnuplot 更好,因为:

  1. 它是一个完整的编程环境,带有C 和 Fortran 兼容的扩展 API。如果你的计算机可以做一件事,你就可以用 R 来做。

  2. 许多人已经将他们对常见问题的解决方案贡献给了CRAN:综合 R 档案网络。您可能会发现zooggplot2包对此任务很有帮助。

  3. 很多书上的时间序列分析[R一般

R 拥有您所要求的一切:

  • 输出到 X11、PNG 或(带有附加组件)SVG

  • 图点的实心圆圈: passpch=19pch=20to par()points()。还有许多其他预定义的绘图点符号,如果您使用支持 Unicode 的字体,还可以使用所有 Unicode。

  • 时间感知图表:如果内置图表没有您想要的缩放比例,您可以使用 R 的绘图原语构建您需要的任何内容

  • 可从脚本调用:#!/usr/bin/Rscript在 R 程序文件中使用shebang 行

  • 好看又方便:有GUI前端,如果你喜欢,如果你不喜欢,默认的命令驱动环境有很多不错的功能,比如可以看到许多内置操作的R源代码,这有助于了解系统是如何组合在一起的。(是的,R 的大部分内容都是用 R 编写的!)

  • 漂亮的情节:如果 R 是针对 Cairo 构建的,则抗锯齿​​是默认设置,如果它是最近在 Linux 上构建的,则默认设置。旧版本的 R 可能没有内置 AA。如果您花一些时间了解 R 的功能,请查看以下内容:

    (点击图片查看描述它的文章。)

关于 gnuplot 命令行,您可以构建它以支持 GNU readline、BSD libedit,或作为后备,自定义内置命令行编辑方案。(这是根据手册的第 20 页。)我在一台机器上有 gnuplot 3.7,在另一台机器上有 4.0,它们都是用 readline 构建的。你的二进制文件是在没有这些的情况下构建的吗?


Kow*_*owh 5

RRDTool存在的全部目的是绘制时间序列数据,但它主要用于自动绘图,可能不是最适合您的需求。

那说:

  • 它可以以 PNG 或 SVG 格式输出,但没有预览功能。
  • 内置时间标度。
  • 轻松编写脚本(命令行访问或许多脚本语言中的库)。
  • 可以使输出看起来相当不错。

RRD工具图