![如何可视化时间序列数据?](https://linux22.com/image/42554/%E5%A6%82%E4%BD%95%E5%8F%AF%E8%A7%86%E5%8C%96%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我有一些时间序列数据,我想将其可视化为二维图。
输入为 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 更好,因为:
这是一个完整的编程环境,兼容 C 和 Fortran 的扩展 API。如果你的计算机可以做某件事,你也可以用 R 来完成。
许多人已经将常见问题的解决方案贡献给了克兰:综合 R 档案网络。您可能会发现
zoo
和ggplot2
对这项任务有帮助的包。
R 拥有您想要的一切:
输出为 X11、PNG 或(带有一个附加组件) SVG
绘图点的实心圆圈:pass
pch=19
或pch=20
to帕()或者点()。还有许多其他预定义的绘图点符号,如果您使用支持 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 格式输出,但没有预览功能。
- 时间缩放是内置的。
- 轻松编写脚本(命令行访问或多种脚本语言的库)。
- 可以使输出看起来相当不错。