Software-Rec
如何視覺化時間序列數據?
我有一些時間序列數據,我想將其視覺化為二維圖。
輸入是 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 格式輸出,但沒有預覽功能。
- 時間刻度是內置的。
- 輕鬆編寫腳本(命令行訪問或許多腳本語言的庫)。
- 可以使輸出看起來相當不錯。
R在這類事情上比 Gnuplot 更好,因為:
- 它是一個完整的程式環境,具有與C 和 Fortran 兼容的擴展 API。如果您的電腦可以做某事,那麼您可以使用 R 來做。
- 許多人已經為CRAN的常見問題貢獻了他們的解決方案:Comprehensive R Archive Network。您可能會發現
zoo
和ggplot2
包對這項任務很有幫助。- 一般有很多關於時間序列分析和R的書籍。
R 擁有您所要求的一切:
- 輸出到 X11、PNG 或(帶有附加組件)SVG
- 繪圖點的實心圓圈:傳遞
pch=19
或傳遞pch=20
到par()或points()。如果您使用支持 Unicode 的字型,還有許多其他的繪圖點符號預定義,以及所有 Unicode。- 時間感知圖表:如果內置圖表沒有您想要的縮放比例,您可以使用 R 的繪圖原語建構您需要的任何東西
- 可從腳本呼叫:在 R 程序文件中使用
#!/usr/bin/Rscript
shebang 行- 好用又方便:有 GUI 前端,如果你喜歡,如果你不喜歡,預設的命令驅動環境有很多不錯的功能,比如能夠查看許多內置操作的 R 原始碼,這有助於了解系統是如何組合在一起的。(是的,R 的大部分內容都是用 R 編寫的!)
- 漂亮的情節:如果 R 是針對 Cairo 建構的,則抗鋸齒是預設設置,如果它是最近在 Linux 上建構的,它將是預設設置。舊版本的 R 可能沒有內置 AA。如果您花點時間了解 R 的功能,請查看以下內容:
(點擊圖片查看描述它的文章。)
關於 gnuplot 命令行,您可以建構它以支持 GNU readline、BSD libedit,或者作為備份,一種自定義的內置命令行編輯方案。(這根據手冊的第 20頁。)我在一台機器上有 gnuplot 3.7,在另一台機器上有 4.0,它們都是用 readline 建構的。你的二進製文件是在沒有這些的情況下建構的嗎?