Применение фреймворка Shiny для разработки...
Transcript of Применение фреймворка Shiny для разработки...
Содержание
• Краткий обзор среды статистических исследований R
• Фреймворк Shiny для разработки веб-приложений
• Структура приложения на Shiny
• Особенности разработки приложений
• Запуск Shiny библиотеки, Shiny Server и размещение приложения в сети интернет
• Примеры приложений на основе Shiny
Статистика в R
R — язык программированиядля статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом
Статистика в R
Применение R позволяет быстро и достаточнопросто производить статистическую обработкуданных.
data <- c(2,5,8,10,12,15,20,30)mean(data) # 12.75sd(data) # 8.956243quantile(data)hist(data)shapiro.test(data)# W = 0.9442, # p-value = 0.6525
Преимущества R
R – программноеобеспечение с открытым кодом, чтопозволяет использоватьего свободно и бесплатно
Преимущества R
R активно развивается и на данный момент разработано уже более9 тысяч библиотек
6085 библиотек
2055 библиотек
>1100 репозиториев
Недостатки R
R имеет ряд менеесущественных проблем вроде отсутствия GUI, достаточноисчерпывающейдокументации и т. д.
Фреймворк Shiny
Shiny – пакет для создания интерактивных веб-приложений на основе R.
Главная задача – дать пользователям R создавать онлайн приложения без знания HTML + CSS и JavaScript.
Фреймворк Shiny
Особенностью приложений на Shiny является ихреактивность.
a <- 3b <- a + 2a <- 7
b == ?
Реактивность:b = 9
Фреймворк Shiny
Начать работу с Shiny достаточно просто –установить как любой пакет с CRAN репозитория.
install.packages('shiny')library(shiny)
Структура приложения Shiny
Два основных компонента приложения
server.R ui.R
Принимает входящиеданные и запускает
триггеры
Предоставляет возможности ввода
данных и вывода результатов
Триггер выполняется каждый раз при
изменении зависимой переменной
В серверной части приложения важно определитьнеобходимые функции и их предметный охват.
# Объекты доступные для всех сессийsource('all_sessions.R', local=TRUE)
shinyServer(function(input, output) {# Объекты, определенные для каждой сессииsource('each_session.R', local=TRUE)
output$text <- renderText({# Объекты, определяемые каждый раз при вызове функцииsource('each_call.R', local=TRUE)# ...
})})
Структура приложения Shiny
Использование входных данных, преобразование и соответствующий вывод.
shinyServer(function(input, output) {
output$text1 <- renderText({# Прием входящей переменнойlocal_var <- input$var# Преобразованиеlocal_var <- local_var + 5# Вывод результатовlocal_var
})
})
Структура приложения Shiny
renderImage
renderPlot
renderPrint
renderTable
renderText
renderUI
При помощи элементов actionButton и submittButton контролируется реактивность.
shinyServer(function(input, output) {
output$text1 <- renderText({# Указание на зависимость от элементаinput$actionButton# Изолирование входящей переменнойisolate(local_var <- input$var)local_var <- local_var + 5local_var
})
})
Структура приложения Shiny
В части пользовательского интерфейса задается верстка веб-страницы на фреймворке Bootstrap 2.3.2.
shinyUI(# Макет страницыfluidPage(titlePanel = 'Test page',
# Виджет ввода данныхselectInput('variable', 'Variable:',
c('Option A' = 'a','Too Critical' = 'critical','Advancement' = 'advance')),
# Вывод данныхtextOutput('var')
))
Структура приложения Shiny
При разработке GUI первым делом планируется макет интерфейса.
Структура приложения Shiny
sidebarLayout
tabPanel
verticalLayout
navlistPanel
fluidRow
HTML elements
column
Затем определяются виджеты ввода данных.
Структура приложения Shiny
actionButton checkboxInput checkboxGroupInput
dateInput dateRangeInput fileInput
numericInput radioButtons selectInput
sliderInput sliderInput textInput
Последними определяются поля выводаобработанной информации.
Структура приложения Shiny
htmlOutput imageOutput plotOutput
tableOutput dataTableOutput textOutput
“Text in Shiny”
Большинство приложений использует исходнуютему Bootstrap. Тем не менее можно свободноприменять CSS для дополнительной темизации.
Особенности разработки приложений
tags$head(tags$link(rel = 'stylesheet', type = 'text/css', href = 'bootstrap.css')
),
Создание GUI в виде функции скрипта ui.R можетстать настоящим адом. Иная структура приложенияразрешает использовать HTML
Особенности разработки приложений
shinyUI(fluidPage(titlePanel(…),sidebarLayout(sidebarPanel(…), mainPanel(…)
)))
<application-dir>|-- www
|-- index.html|-- server.R
<!-- Для ввода переменных применяютсятеги с соответствующим параметром name
Для вывода – соответствующие теги с параметрами id (имя переменной вывода) и class (спецификацией вывода) -->
Отладка приложения может быть значительнооблегчена запуском приложения с параметром
runApp(displayMode = ‘showcase’)
Особенности разработки приложений
Запуск приложения Shiny
Запуск Shiny приложения может осуществляться с любого компьютера, на котором установлены R, Shiny и необходимые библиотеки.
# запуск из локальной папкиrunApp('My App')
# запуск приложения по ссылкеrunUrl(url('http://my.host.ua/my_app.zip'))
# запуск приложения с GistrunGist(1234567)
# запуск приложения с GitHubrunGitHub('my-repo', ‘myUserName')
Размещение в интернет
Разместить собственное приложение в интернетможно при помощи сервиса shinyapps.io или на собственном сервере Shiny
Собственный сервер
У Shiny Server относительно небольшие требования, но могут возникнуть некоторые проблемы.
RAM CPU
> 50 MB No min req, but single thread
OS
RedHat Enterprise Linux (and CentOS) 5.4+
RedHat Enterprise Linux (and CentOS) 6.0+
Ubuntu 12.04+
Ubuntu 13.04+
Ubuntu 14.04+
RAM CPU
OS
Собственный сервер
Популярные сегодня решения – это установка сервера на EC2 Amazon, DigitalOcean и Heroku.
Собственный сервер
Установка сервера
# Установка R
sudo nano /etc/apt/sources.list
# Добавить CRAN# deb http://cran.rstudio.com/bin/linux/ubuntu trusty/sudo apt-get updatesudo apt-get install r-base
# Установка библиотеки Shiny в среде R
sudo su - \-c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""
Собственный сервер
Установка сервера
# Установка Shiny Server
sudo apt-get install gdebi-core
wget http://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.2.3.368-amd64.deb
sudo gdebi shiny-server-1.2.3.368-amd64.deb
# Далее устанавливаются все необходимые для приложениябиблиотеки. Сделать это можно непосредственно из R при помощи функции install.packages()
Собственный сервер
Настройки установленного сервера доступны здесь /etc/shiny-server/shiny-server.conf
При необходимости следует изменить порт, который слушает сервер, доменное имя и базовое приложение
Приложения размещаются в директории
/srv/shiny-server
Обычно проще всего сделать форк с GitHub’а
Несколько мыслей
Shiny разрабатывалась как библиотека для людей, которые умеют пользоваться R и хотели бы применять его в интернет. Возможно, использование Shiny будет излишним для решения конкретных задач.
Shiny наиболее удобен для решения типовых задач, формирования автоматических отчетов, различных видов эксплораторного анализа.
Ресурс R может использоваться без Shiny. Например, rApache, Rserve, deployR, RRack и т. д.
Примеры приложений
https://amice13.shinyapps.io/dproduct/
http://188.226.153.34/
http://shinyapps.stat.ubc.ca/r-graph-catalog/
https://thiemom.shinyapps.io/dataproducts-titanic/
https://fbarth.shinyapps.io/predict_real_estate_price/
https://cpargeter.shinyapps.io/Project/
https://econometricsbysimulation.shinyapps.io/Survey/
http://glimmer.rstudio.com/pssguy/storesMap/
http://glimmer.rstudio.com/sondaze/PISAoccup2012/