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


8

我有一些时间序列数据,希望将其可视化为2d图。

输入为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外壳令人不安-它不使用readline,它坏了,命令完成是个玩笑,我不知道如何启用vi快捷方式-或如果支持它们,那么反向搜索如何?

因此,我的问题是:时间序列数据的可视化方法有哪些?

还是我夸大了gnuplot问题?

Answers:


5

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

说:

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

RRDTool图


听起来很有趣,缺少预览并不是一件坏事-仅生成png并排使用图像查看器就可以了。您能举一个简单的命令行调用这个工具的例子吗?
maxschlepzig 2011年


基本上,您运行rrdtool create ...一次以设置RRD数据库,rrdtool update ...每条数据一次并rrdtool graph ...生成一个图形。
2011年

12

R在这种情况下比Gnuplot更好,因为:

  1. 它是一个完整的编程环境,带有与C和Fortran兼容的扩展API。如果您的计算机可以执行某项操作,则可以使用R来执行。

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

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

R具有您要求的一切:

  • 输出到X11,PNG或SVG (带有附件

  • 绘制点的实心圆:通过pch=19pch=20par()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,另一台机器上安装了gnuplot 4.0,它们都使用readline构建。您的二进制文件中是否没有这些文件?


我开始使用R进行所有统计并在工作中绘图,这很棒!
jsbillings

有关libedit的好提示。好吧,我在Ubuntu 10.04上使用默认的gnuplot软件包。看来它与libedit链接在一起,后者似乎至少支持vi模式。但是命令完成仅是最小的(仅适用于文件名),而不能与gnuplot命令一起使用,即,它基本上是无用的(这不是libedit的错)。
maxschlepzig

您能否添加一个简单的示例R会话来生成基本绘图(读取(上面绘制的)文件并发布我猜的绘图功能)?
maxschlepzig 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.