Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

R4marketing | канал Алексея Селезнёва | Язык R

4 года назад
Открыть в
Как добавить анимацию процесса загрузки на визуальный элемент пользовательского интерфейса Shiny приложения —————————— В ноябре в канале было много публикаций посвящённых Rmarkdown. В декабре будет серия публикаций посвящённых пакетам, расширяющих или улучшающих разработку пользовательского интерфейса Shiny приложений. Сегодня первая публикация из этой серии. —————————— Некоторые визуальные элементы (карты, графики, таблицы и т.д.) Shiny приложений могут требовать какого-то времени на пересчёт. Пакет shinycssloaders позволяет вам добавить такой спиннер-информер на любой визуальный элемент. Для добавления просто заверните нужный визуальный элемент в функцию withSpinner(). Пример кода:
library(shiny)

ui <- fluidPage(
    actionButton("go", "Go"),
    shinycssloaders::withSpinner(
        plotOutput("plot")
    )
)
server <- function(input, output) {
    output$plot <- renderPlot({
        input$go
        Sys.sleep(1.5)
        plot(runif(10))
    })
}
shinyApp(ui, server)

Результат работы видно на изображении к посту. Как по мне для пользователя такой информер будет выглядеть привлекательнее, чем просто потускневший график. Аргумент type позволяет выбрать один из типов анимации загрузки. Посмотреть как выглядит каждый из них можно по ссылке. Аргументы color и size позволяют изменять цвет и размер анимации соответвенно. Опции spinner.type, spinner.color, spinner.size позволяют вам глобально задавать настройки анимации для всех визуальных элементов, обёрнутых функцией withSpinner().