Большинство серьезных специалистов по данным предпочитают R вместо Python, но если вы работаете над производством в области науки о данных или машинного обучения, вам, вероятно, придется отказаться от пристрастия к R. Фактически, ведутся годы споров, следует ли людям использовать R или Python.

Не может быть и речи о том, что Python более популярен, чем R, учитывая множество преимуществ, которые Python предлагает. Тем не менее, для чистой науки о данных и расширенных пакетов визуализации R по-прежнему имеет небольшое преимущество перед Python, хотя за последние годы разрыв значительно сократился.

Исторически R имел более широкий набор пакетов для статистического анализа и визуализации. Популярные библиотеки включают dplyr, zoo и ggplot2; и их еще несколько десятков. Среди них есть один пакет, который предоставляет набор инструментов для использования визуализаций D3 с R: r2d3.

Что такое r2d3?

Пакет r2d3 обогащает пользователей R обширными функциями визуализации внутри R, включая возможность отображать визуальные эффекты D3 в приложениях Shiny и добавлять их в документы с уценкой R, а также публикацию Shiny Web. Визуализации работают так же, как любые другие графики R в R Studio, документах R Markdown и приложениях Shiny. Вот несколько примеров, и многие другие можно найти в Галерее r2d3!

Просмотр календаря

Иерархическое объединение границ

Обнаружение столкновений

График движения

Последовательности солнечных лучей

Блок-схема

Генератор облака слов

Где мы можем использовать r2d3?

Практически везде, где у вас может быть HTML, в том числе:

  • Отчеты R Markdown
  • Блестящие приложения
  • Программа просмотра RStudio
  • Веб-браузер

С чего начать?

Во-первых, нам нужно установить пакет с GitHub следующим образом:

devtools::install_github("rstudio/r2d3")

Затем вам необходимо установить RStudio v1.2, чтобы воспользоваться преимуществами различных интегрированных инструментов для сценариев D3, и оттуда вы можете попробовать следующий базовый рабочий процесс внутри RStudio.

О D3

Создание визуализаций данных с помощью r2d3 требует большого количества программирования пользовательской графики SVG (аналогично созданию пользовательской графики сетки в R). Поэтому это отлично подходит, когда вам нужны сильно настраиваемые визуализации, которые не поддерживаются существующими библиотеками.

Если вы новичок в D3, вы также можете прочитать статью Learning D3, прежде чем продолжить.

Скрипты D3

Чтобы использовать r2d3, напишите сценарий D3, а затем передайте ему данные R с помощью функции r2d3(). Ниже приведен хороший пример из r2d3 github: рисует гистограмму (barchart.js):

// !preview r2d3 data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20)

var barHeight = Math.floor(height / data.length);

svg.selectAll('rect')
  .data(data)
  .enter().append('rect')
    .attr('width', function(d) { return d * width; })
    .attr('height', barHeight)
    .attr('y', function(d, i) { return i * barHeight; })
    .attr('fill', 'steelblue');

Чтобы отобразить сценарий в R, вы вызываете функцию r2d3():

library(r2d3)
r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), script = "barchart.js")

В результате получается следующая визуализация:

D3 переменные

Обратите внимание, что данные предоставляются сценарию с использованием аргумента data функции r2d3(). Затем эти данные автоматически становятся доступными для сценария D3. В скриптах D3 доступен ряд других специальных переменных, в том числе:

  • data - Данные R преобразованы в JavaScript.
  • svg - Контейнер SVG для визуализации
  • width - Текущая ширина контейнера
  • height - Текущая высота контейнера
  • options - Дополнительные параметры, предоставляемые пользователем
  • theme - Цвета для текущей темы

Когда вы изучаете D3 или переводите примеры D3 для использования с R, важно помнить, что примеры D3 обычно включают код для загрузки данных, создания SVG или другого корневого элемента и определения ширины и высоты для визуализации.

С другой стороны, в r2d3 эти переменные предоставляются автоматически, поэтому создавать их не нужно. Эти переменные предоставляются автоматически по следующим причинам:

1) Чтобы вы могли динамически привязывать данные из R к визуализациям; а также

2) Чтобы r2d3 мог автоматически обрабатывать динамическое изменение размера вашей визуализации. Большинство примеров D3 имеют статический размер. Это хорошо для примера, но не очень надежно для включения визуализации в отчет, информационную панель или приложение.

Предварительный просмотр D3

Предварительный выпуск RStudio v1.2 RStudio включает поддержку предварительного просмотра сценариев D3 по мере их написания. Чтобы попробовать это, создайте сценарий D3, используя меню нового файла:

По умолчанию предоставляется простой шаблон для сценария D3 (приведенный выше пример barchart.js). Вы можете использовать команду Предварительный просмотр (Ctrl + Shift + Enter) для визуализации визуализации:

R Markdown

Вы можете включить визуализацию D3 в документ R Markdown или R Notebook. Вы можете сделать это, вызвав функцию r2d3() из фрагмента кода R:

---
output: html_document
---
```{r}
library(r2d3)
r2d3(data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20), script = "barchart.js")
```

Вы также можете встроить код визуализации D3, используя механизм d3 R Markdown:

```{r setup}
library(r2d3)
bars <- c(10, 20, 30)
```

А также

```{d3 data=bars, options=list(color = 'orange')}
svg.selectAll('rect')
  .data(data)
  .enter()
    .append('rect')
      .attr('width', function(d) { return d * 10; })
      .attr('height', '20px')
      .attr('y', function(d, i) { return i * 22; })
      .attr('fill', options.color);
```

Обратите внимание, что для использования механизма d3 вам необходимо добавить library(r2d3) в блок настройки (как показано выше).

Блестящий

Функции renderD3() и d3Output() позволяют включать визуализации D3 в приложения Shiny:

library(shiny)
library(r2d3)
ui <- fluidPage(
  inputPanel(
    sliderInput("bar_max", label = "Max:",
                min = 0.1, max = 1.0, value = 0.2, step = 0.1)
  ),
  d3Output("d3")
)
server <- function(input, output) {
  output$d3 <- renderD3({
    r2d3(
      runif(5, 0, input$bar_max),
      script = system.file("examples/baranims.js", package = "r2d3")
    )
  })
}
shinyApp(ui = ui, server = server)

Для получения дополнительной информации люди также могут увидеть статью Использование r2d3 с Shiny, чтобы узнать больше (в том числе о том, как создавать собственные входы Shiny, которые реагируют на взаимодействие пользователя с визуализациями D3).

Спасибо за прочтение!

Если вам понравилось, подпишитесь на меня на Medium, чтобы узнать больше. Это отличное кардио для 👏 И поможет другим людям увидеть историю.

Если вы хотите и дальше получать этот тип статей, вы можете поддержать меня, став Средним подписчиком. Это стоит 5 долларов в месяц. Мне достается часть вашей абонентской платы .

использованная литература