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

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

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

输入为 ISO 日期格式,值以空格分隔,每行一条记录:

2010-10-21 23
2010-10-22 32
etc.

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

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

奖金:

  • svg输出

我尝试过gnuplot并且它有效 - 它有一些日期支持:

gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot "test.dat" using 1:2

但我对 gnuplot 有一些问题:

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

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

或者我是否夸大了 gnuplot 问题?

答案1

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

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

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

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

R 拥有您想要的一切:

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

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

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

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

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

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

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

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

答案2

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

那是说:

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

RRDTool 图

相关内容