суббота, 9 января 2016 г.

Bokeh: еще одна библиотека для создания интерактивной графики



Продолжая тему создания интерактивной графики, рассмотрим изначально питоновскую библиотеку Bokeh, которая реализована для R в виде пакета rbokeh.


Устанавливается она с Гитхаба, для работы требует htmlwidgets:
# Установка с GithHub:
devtools::install_github("ramnathv/htmlwidgets")
devtools::install_github("bokeh/rbokeh", ref = "master")
Пакет отлично документирован, на одной странице находится руководство, на другой - справка.
Принцип построения графика напоминает ggplot2: после инициализации с помощью функции figure() происходит добавление элементов, называемых “глифами”, с помощью соответствующих функций. Все функции, добавляющие слои на график (ly_point, ly_abline и др.), имеют общий префикс ly_ и принимают в качестве первого аргумента объект, содержащий изменяемый график. Можно использовать конвейерный оператор %>%:
p <- figure() %>%
  ly_points(speed, dist, data = cars)
Можно явно указывать набор данных для каждого слоя, как это было сделано в примере выше. Имена переменных из набора данных передаются в качестве аргументов функции с использованием нестандартного вычисления.
Что касается собственно интерактивных возможностей, то здесь помимо разных вариантов масштабирования есть возможность определять, что будет отображаться в виде “всплывающей подсказки” при наведении курсора. За это отвечает аргумент hover:
figure() %>%
  ly_points(speed, dist, data = cars, hover = c(speed, dist))

figure() %>%
  ly_points(speed, dist, data = cars, hover = "This car was going @speed mph!")
Атрибуты или векторы атрибутов задаются самым обыкновенным образом:
n <- nrow(cars)
ramp <- colorRampPalette(c("red", "blue"))(n)
figure() %>%
  ly_points(cars, color = ramp, size = seq_len(n))
Еще один пример из руководства:
p <- figure() %>%
  ly_points(Sepal.Length, Sepal.Width, 
            data = iris,
            color = Species, 
            glyph = Species)
p
В общем, данный пакет мне понравился, и я обязательно попробую сделать какое-нибудь полезное shiny-приложение с его использованием. Из негатива: в текущей версии не работает создание standalone html, о чем уже написан багрепорт. При этом в старой версии (я использовал 2.3.2) таких проблем не было (пример html со встроенным графиком лежит здесь). Вот еще интересный пример того, что можно сделать при помощи rbokeh: Модный график с помощью «Bokeh».

Комментариев нет:

Отправить комментарий