Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика ТОИ / Практика ТОИ - 2.docx
Скачиваний:
97
Добавлен:
21.04.2015
Размер:
1.56 Mб
Скачать

Структура Shiny приложения

Shiny приложение имеет две составляющие: скрипт пользовательского интерфейса и серверный скрипт.

Скрипт пользовательского интерфейса управляет форматом и внешним видом приложения. Он определяется в файле с именем ui.R. Вот сценарий ui.R приложения 01_hello:

ui.R

# Определение пользовательского интерфейса для приложения

shinyUI(fluidPage(

# Заголовок приложения

titlePanel("Hello Shiny!"),

# Определение ползунка для установки числа прямоугольников sidebarLayout(

sidebarPanel(

sliderInput("bins",

"Number of bins:",

min = 1,

max = 50,

value = 30)

),

# Демонстрация сгенерированной гистограммы

mainPanel(

plotOutput("distPlot")

)

)

))

Серверный скрипт server.R содержит команды необходимые компьютеру для построения приложения. Ниже приведен текст этого скрипта:

server.R

# Определение логического сервера для вывода гистограммы shinyServer(function(input, output) {

# Выражение для формирования гистограммы определяет, что:

# 1) надо динамично пересчитывать число прямоугольников

# 2) выводить гистограмму в виде графически

output$distPlot <- renderPlot({

x <- faithful[, 2]

bins <- seq(min(x), max(x), length.out = input$bins + 1)

# Вывод гистограммы с заданным числом прямоугольников

hist(x, breaks = bins, col = 'darkgray', border = 'white')

})

})

Фактически, сценарий server.R приложения 01_hello достаточно прост: выполняются некоторые вычисления, а затем строится гистограмма с необходимым числом прямоугольников. Тем не менее, необходимо правильно задать параметры функции renderPlot().

Создание пользовательского интерфейса

Рассмотрим как построить пользовательский интерфейс для некоторого приложения. Любое приложение строится на основе как минимум двух файлов с фиксированными именами ui.R и server.R. Таким образом, целесообразно для каждого приложения создавать свою папку и в них размещать эти файлы. Будем использовать шаблоны готовых скриптов server.R и ui.R следующего содержания:

ui.R

shinyUI(fluidPage(

))

server.R

shinyServer(function(input, output) {

})

Этот код - минимум, который необходим для создания Shiny приложения. Результатом является пустое приложение с пустым пользовательским интерфейсом, которое будет нашей отправной точкой.

Использование в скрипте ui.R функции fluidPage(), позволит создать окно приложения, которое автоматически приспосабливается к размерам окна браузера пользователя. Например, следующий сценарий:

# ui.R

shinyUI(fluidPage(

titlePanel("Заголовок"),

sidebarLayout(

sidebarPanel( "Боковая панель"),

mainPanel("Основная панель")

)

))

создаст пользовательский интерфейс (рис. 2), который имеет панель заголовка titlePanel(), и макет боковой панели sidebarLayout(), включающей в себя боковую sidebarPanel() и основную панели sidebarPanel(). Следует отметить, что эти элементы расположены внутри функции fluidPage().

Рис. 2. Простейший пользовательский интерфейс

Функции titlePanel() и sidebarLayout() являются двумя наиболее популярными элементами в fluidPage(). Они создают основу Shiny приложения с боковой панелью. Функция sidebarLayout() всегда имеет два аргумента: функцию выхода sidebarPanel() и mainPanel(). Эти две функции позволяют разместить контент в любой из панелей. Боковая панель появится на левой стороне вашего приложения по умолчанию. Можно переместить ее в правую сторону, дополнив sidebarLayout() дополнительным параметром position = "right".

Используя другие функции можно создавать более продвинутые макеты приложения. Например, функция navbarPage() позволяет создавать многостраничные приложения, содержащие панель навигации.

Соседние файлы в папке Практика ТОИ