В мире, где рабочие нагрузки накапливаются, а время сокращается, поддержание удовлетворенности заинтересованных сторон является настоящей проблемой. С появлением таких платформ, как Power BI, Shiny, Tableau и т. д., которые позволяют пользователям создавать интерактивные самостоятельные отчеты, информационные панели и приложения, эта задача больше не кажется сложной.
Будучи инженером по надежности, я, естественно, склоняюсь к использованию этих платформ для разработки решений, которые оптимизируют или автоматизируют некоторые повседневные задачи. Взаимодействуя в течение дня с несколькими заинтересованными сторонами с разным уровнем знаний в области проектирования надежности, некоторые вопросы никогда не устаревают, например: требования к размеру выборки, демонстрация надежности, расчеты продолжительности испытаний и т. д.
На многие из этих вопросов можно ответить, используя простые калькуляторы, которые в настоящее время основаны на Excel. Файлы на основе Excel страдают от простоты обмена, отсутствия визуального и интерактивного интерфейса, проблем с контролем версий и так далее. Это всегда заставляло меня задуматься о разработке интерактивных веб-инструментов, но, будучи инженером-механиком с небольшим опытом программирования, это всегда казалось сложной задачей, пока я не наткнулся на Shiny.
Shiny — это пакет R, упрощающий разработку интерактивных веб-приложений. Я начал с того, что у меня не было опыта программирования на R, и я смог разрабатывать простые приложения Shiny менее чем за шесть месяцев. В этой статье я делюсь некоторыми ресурсами, которые помогли мне на этом пути, и показываю некоторые базовые фрагменты кода, которые я использовал в своем приложении.
Когда у меня появились некоторые базовые знания о кодировании R, я начал с руководств на Блестящем веб-сайте. Он начинается с предоставления базового шаблона приложения, который можно использовать в качестве основы для всех приложений, которые вы можете разрабатывать.
Шаблон приложения:
library(shiny) ui <- fluidPage() server <- function(input, output) shinyApp(ui = ui, server = server)
Запуск приведенного выше фрагмента кода создает пустое блестящее приложение.
Полезно думать о приложении Shiny с точки зрения входов и выходов. Входные данные — это значения, предоставляемые приложению пользователем путем переключения различных объектов в приложении, а выходные данные — это объект R (графики, таблицы, текст и т. д.), который реагирует, когда пользователь изменяет входные данные.
fluidPage Функция:
Входные и выходные данные можно добавить в приложение, добавив функции ввода и вывода внутри fluidPage, как показано ниже:
ui <- fluidPage( # *Input() functions, # *Output() functions )
В Shiny доступно множество различных типов объектов ввода и вывода. Шпаргалка Shiny оказывается чрезвычайно полезной в этом отношении.
Пример 1. Код для создания входного объекта slider и выходного объекта plot:
ui <- fluidPage( sliderInput(inputId = "num", label = "Choose a number", value = 25, min = 1, max = 100), plotOutput(outputId = "hist") )
Ссылка на шпаргалку: https://shiny.rstudio.com/images/shiny-cheatsheet.pdf
сервер Функция
После создания функций ввода и вывода следующим шагом будет указание серверу, как собрать входные данные в выходные. Функция рендеринга в сочетании с функцией output помогает нам добавить вывод R в пользовательский интерфейс. Памятка содержит обзор различных функций рендеринга, доступных в Shiny, а также соответствующих функций вывода.
Пример 2: Код для подключения входа к выходу:
server <- function(input,output){ output$hist <- renderPlot({ hist(rnorm(input$num)) }) }
Приведенный выше код соединяет входное значение объекта ползунка «num», показанного в примере 1, с объектом графика «hist».
После того, как вы ознакомитесь с основными элементами приложения Shiny, вы сможете экспериментировать со способами создания различных макетов, вставки изображений, создания вкладок и т. д., чтобы добавить необходимые функции.
Мое приложение
Ниже приведен снимок приложения, которое я создал вместе с примером кода.
library(ggplot2) library(shiny) ui <- fluidPage( titlePanel(div(img(src = ...),"...")), tabsetPanel( tabPanel("Tab Name1", fluid = TRUE, sidebarLayout( sidebarPanel( sliderInput( .... ), sliderInput( .... ) ), mainPanel( textOutput("..."), plotOutput("hist"), ) ) ), tabPanel("Tab Name2", fluid = TRUE, ... ) ), tabPanel("Tab Name3", fluid = TRUE, ... ) ) server <- function(input, output) { output$hist = renderPlot({ ggplot(...), ...., ...., }) } shinyApp(ui = ui, server = server)
Надеюсь, эта статья даст вам некоторые идеи и основные ресурсы для создания интересных приложений Shiny.
Иди Блестящий!!