Software-Rec

如何視覺化時間序列數據?

  • March 5, 2018

我有一些時間序列數據,我想將其視覺化為二維圖。

輸入是 ISO-date-format 和 value 用空格分隔,每行一條記錄:

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 問題?

RRDTool存在的全部目的是繪製時間序列數據,但它主要用於自動繪圖,可能不是最適合您的需求。

那說:

  • 它可以以 PNG 或 SVG 格式輸出,但沒有預覽功能。
  • 時間刻度是內置的。
  • 輕鬆編寫腳本(命令行訪問或許多腳本語言的庫)。
  • 可以使輸出看起來相當不錯。

RRD工具圖

R在這類事情上比 Gnuplot 更好,因為:

  1. 它是一個完整的程式環境,具有與C 和 Fortran 兼容的擴展 API。如果您的電腦可以做某事,那麼您可以使用 R 來做。
  2. 許多人已經為CRAN的常見問題貢獻了他們的解決方案:Comprehensive R Archive Network。您可能會發現zooggplot2包對這項任務很有幫助。
  3. 一般很多關於時間序列分析R的書籍。

R 擁有您所要求的一切:

  • 輸出到 X11、PNG 或(帶有附加組件)SVG
  • 繪圖點的實心圓圈:傳遞pch=19或傳遞pch=20par()points()。如果您使用支持 Unicode 的字型,還有許多其他的繪圖點符號預定義,以及所有 Unicode。
  • 時間感知圖表:如果內置圖表沒有您想要的縮放比例,您可以使用 R 的繪圖原語建構您需要的任何東西
  • 可從腳本呼叫:在 R 程序文件中使用#!/usr/bin/Rscriptshebang 行
  • 好用又方便:有 GUI 前端,如果你喜歡,如果你不喜歡,預設的命令驅動環境有很多不錯的功能,比如能夠查看許多內置操作的 R 原始碼,這有助於了解系統是如何組合在一起的。(是的,R 的大部分內容都是用 R 編寫的!)
  • 漂亮的情節:如果 R 是針對 Cairo 建構的,則抗鋸齒是預設設置,如果它是最近在 Linux 上建構的,它將是預設設置。舊版本的 R 可能沒有內置 AA。如果您花點時間了解 R 的功能,請查看以下內容:

(點擊圖片查看描述它的文章。)

關於 gnuplot 命令行,您可以建構它以支持 GNU readline、BSD libedit,或者作為備份,一種自定義的內置命令行編輯方案。(這根據手冊的第 20頁。)我在一台機器上有 gnuplot 3.7,在另一台機器上有 4.0,它們都是用 readline 建構的。你的二進製文件是在沒有這些的情況下建構的嗎?

引用自:https://unix.stackexchange.com/questions/6619