R: обновить график динамически [закрыто]

9

Это вопрос визуализации данных. У меня есть база данных, которая содержит некоторые данные, которые постоянно пересматриваются (онлайн-обновление). Как лучше всего обновлять график в R каждые 5 или 10 секунд? (без повторного заговора все возможно)?

Фред

RockScience
источник

Ответы:

7

Предполагая, что вы хотите обновить R windows()или x11()график, вы можете использовать такие функции, как points()и, lines()чтобы добавлять новые точки или расширять линии на графике без перерисовки; Тем не менее, обратите внимание, что это не изменит диапазон осей для размещения точек, которые могут быть вне поля зрения. В целом, обычно хорошей идеей является создание самого графика мгновенно - например, путем перемещения вычислительных усилий в создание некоторого уменьшенного среднего представления, которое можно построить быстро, например, карту плотности вместо огромного количества точек или уменьшение разрешения линейных графиков ( это может быть сложно, хотя).

Для проведения сеанса R в течение определенного времени без ожидания, используйте Sys.sleep().


источник
Sys.sleep()ИксY
ИксY
1
@mpiktas Или просто запустите сюжет с помощью одного вызова plot(), возможно, с помощью, 0,0,type="n"если еще нечего рисовать ... На самом деле это намного проще, чем динь plot.new()и добавление всех вещей, таких как оси или метки, вручную.
На самом деле это кажется самым простым ... но очень плохо, что оси не обновляются. Поскольку я хочу обновить онлайн временной ряд, и я знаю, с какой скоростью движется ось x, я предполагаю, что я могу пересчитать все, что угодно, каждые n обновлений.
RockScience
8

Для автономной визуализации вы можете создавать PNG-файлы и конвертировать их в анимированный GIF-файл с помощью ImageMagick . Я использовал это для демонстрации (это перерисовывает все данные, хотя):

source(url("http://aliquote.org/pub/spin_plot.R"))
dd <- replicate(3, rnorm(100))
spin.plot(dd)

Это создает несколько файлов PNG с префиксом fig. Затем на un * x shell,

convert -delay 20 -loop 0 fig*.png sequence.gif

дает эту анимацию (которая основана на современных прикладных биостатистических методах с использованием S-Plus , S. Selvin, 1998):

альтернативный текст

Еще один вариант, который выглядит гораздо более перспективным, - использовать пакет анимации . Существует пример с авторегрессией движущегося окна, с которой следует начать.

хл
источник