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

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?

maxschlepzig
источник

Ответы:

5

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

Это говорит:

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

График RRDTool

Kowh
источник
Звучит интересно, пропустить предварительный просмотр не так уж и плохо - достаточно просто сгенерировать 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