Как визуализировать данные временных рядов?


8

У меня есть данные временных рядов, которые я хочу визуализировать как двумерный график.

Входные данные имеют формат ISO-date и значение разделено пробелом, по одной записи на строку:

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

На выходе должен быть красивый 2-мерный сюжет. Базовые требования:

  • вывод в окно 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?

Ответы:


5

Вся цель существования RRDTool - это построение графиков временных рядов, но в первую очередь оно предназначено для автоматизированного построения графиков и может не подходить для ваших нужд.

Это говорит:

  • Он может выводить в формате PNG или SVG, но не имеет функции предварительного просмотра.
  • Временное масштабирование встроено.
  • Легко сценарий (доступ к командной строке или библиотеки на многих языках сценариев).
  • Вывод может выглядеть довольно прилично.

График RRDTool


Звучит интересно, пропустить предварительный просмотр не так уж и плохо - достаточно просто сгенерировать png и использовать средство просмотра изображений рядом. Не могли бы вы привести пример простого вызова командной строки этого инструмента?
— maxschlepzig


По сути, вы запускаете rrdtool create ...один раз, чтобы настроить базу данных RRD, rrdtool update ...один раз для фрагмента данных и rrdtool graph ...создать график.
— 31

12

R лучше в таких вещах, чем Gnuplot, потому что:

  1. Это полная среда программирования с C и Fortran-совместимыми API-расширениями . Если ваш компьютер может что-то сделать, вы можете сделать это с помощью R.

  2. Многие уже предоставили свои решения общих проблем в CRAN : Комплексная сеть R-архивов. Вы можете найти zooи ggplot2пакеты, полезные для этой задачи.

  3. Есть много книг по анализу временных рядов и R в целом .

R имеет все, что вы просили:

  • Выходы в X11, PNG или (с дополнением ) SVG

  • Заполненные кружки для точек графика: пройти pch=19или pch=20в par () или точки () . Предопределено много других символов точек построения, а также весь Юникод, если вы используете шрифт с поддержкой Юникода.

  • Графики с учетом времени: если встроенные не имеют желаемого масштабирования, вы можете построить все, что вам нужно, с помощью примитивов построения R

  • Вызывается из скрипта: используйте #!/usr/bin/Rscriptстроку shebang в вашем программном файле R

  • Приятно и удобно: есть интерфейсы GUI, если вам нравится, и если вам не нравится, среда, управляемая командами по умолчанию, имеет много приятных функций, таких как возможность видеть исходный код R многих встроенных операций, что помогает чтобы узнать, как система составлена. (Да, большая часть R написана на R!)

  • Симпатичные сюжеты: сглаживание используется по умолчанию, если R построен на Cairo, что будет, если это недавняя сборка на Linux. Старые версии R могут не иметь встроенного AA. Чтобы узнать о возможностях R, если вы потратите на это немного времени, проверьте это:

    (Нажмите на изображение для статьи, описывающей это.)

Что касается командной строки gnuplot, вы можете создать ее для поддержки GNU readline, BSD libedit или, в качестве альтернативы, пользовательской встроенной схемы редактирования командной строки. (Это согласно п.20 руководства .) У меня есть gnuplot 3.7 на одной машине и 4.0 на другой, и они обе собраны с readline. Ваш двоичный файл построен без каких-либо из них?


Я начал использовать R для всей моей статистики и построения графиков на работе, это здорово!
— Jsbillings

Хороший намек на либедит. Ну, я использую стандартный пакет gnuplot в Ubuntu 10.04. Кажется, это связано с libedit, который поддерживает режим vi, по крайней мере. Но завершение команды является минимальным (работает только для имен файлов), а не командами gnuplot, то есть в принципе бесполезно (это не ошибка libedit).
— maxschlepzig

Не могли бы вы добавить простой пример сеанса R для генерации базового графика (считывания файла (набросок выше) и выдачи функции графика, я думаю)?
— maxschlepzig
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.