Создайте свою первую информационную панель веб-приложений с помощью Shiny и R

1656654619 sozdajte svoyu pervuyu informaczionnuyu panel veb prilozhenij s pomoshhyu shiny i

от AMR

XLOmdah4ayDylxYHP6jN5oYJVfsoYBjfENRv
Вы научитесь создавать эту информационную панель.

Один из прекрасных подарков, которые имеет R (который Python пропустил, к dash) это Блестящий. Блестящий есть Р пакет, с помощью которого можно легко создавать интерактивные веб-приложения. Р. Информационные панели пользуются популярностью, поскольку они хорошо помогают компаниям анализировать существующие данные.

В этой публикации мы увидим, как использовать рычаги Блестящий создать простую информационную панель доходов от продаж. Вы будете нуждаться Р установлено.

Загрузка пакетов в R

Упаковки, которые вам нужны, необходимо загрузить отдельно и установить с помощью Р. Все следующие пакеты можно установить непосредственно из CRAN, вы можете выбрать, какое зеркало CRAN использовать. Зависимости пакетов также будут загружены и установлены по умолчанию.

После установки пакетов вам нужно загрузить их в свой Р сессии. Используются команды библиотеки и require и, опять же, зависимости пакетов также загружаются автоматически Р.

# load the required packageslibrary(shiny)require(shinydashboard)library(ggplot2)library(dplyr)

Образец входного файла

Поскольку информационная панель требует входных данных для визуализации, мы используем рекомендацию.csv в качестве примера входящих данных для нашей информационной панели. Поскольку это файл .csv, была использована команда read.csv. Первая строка в .csv является строкой заголовка, поэтому используется header=T. Есть два способа, которыми можно получить файл рекомендации.csv в ваш текущий сеанс R:

  1. Откройте эту ссылку – рекомендация.csv и сохранить его (Ctrl+S) в вашем текущем рабочем каталоге, где сохранен этот код R. Тогда следующий код будет работать идеально.
recommendation <- read.csv('recommendation.csv',stringsAsFactors = F,header=T)head(recommendation)       Account Product Region Revenue1    Axis Bank     FBB  North    20002         HSBC     FBB  South   300003          SBI     FBB   East    10004        ICICI     FBB   West    10005 Bandhan Bank     FBB   West     2006    Axis Bank    SIMO  North     200

2. Вместо чтения .csv с локального компьютера вы также можете прочитать его с URL-адреса (в Интернете) с помощью той же функции read.csv. Поскольку этот .csv уже загружен на мой Github, мы можем использовать эту ссылку в нашем read.csv чтобы прочесть файл.

recommendation <- read.csv(' = F,header=T)head(recommendation)       Account Product Region Revenue1    Axis Bank     FBB  North    20002         HSBC     FBB  South   300003          SBI     FBB   East    10004        ICICI     FBB   West    10005 Bandhan Bank     FBB   West     2006    Axis Bank    SIMO  North     200

Обзор Shiny

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

tdyv26oYvF-L49m5a0FeaZCaEzZ67gYaiDRR
Изображение предоставлено: Slideplayer

Вместо того чтобы просто использовать только Блестящиймы совмещаем его с блестящая приборная панель. блестящая приборная панель есть Р пакет, задача которого состоит в том, чтобы облегчить, как следует из названия, создание информационных панелей Блестящий.

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

Часть пользовательского интерфейса a Блестящий приложение, созданное с помощью блестящая приборная панель имеет 3 основных элемента, завернутых в команду dashboardPage(). Самый простой Блестящий код с блестящая приборная панель

## app.R ##library(shiny)library(shinydashboard)ui <- dashboardPage(  dashboardHeader(),  dashboardSidebar(),  dashboardBody())server <- function(input, output) { }shinyApp(ui, server)

предоставляет это приложение

PGHSdjhyNcW0GXSvKfuw4p3gFa6VinXgwfVu
Изображение предоставлено: rstudio

Давайте заселяем dashboardHeader() и dashboardSidebar(). Код содержит комментарии с префиксом #.

#Dashboard header carrying the title of the dashboardheader <- dashboardHeader(title = "Basic Dashboard")  #Sidebar content of the dashboardsidebar <- dashboardSidebar(  sidebarMenu(    menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),    menuItem("Visit-us", icon = icon("send",lib='glyphicon'),              href = "  ))

Элементы пользовательского интерфейса, которые мы хотели бы показать на нашей информационной панели, заполняются dashboardPage() . Поскольку в примере представлена ​​информационная панель доходов от продаж, давайте покажем три окна ключевых показателей эффективности (KPI) вверху, которые представляют краткий итог, а затем две диаграммы для детального просмотра.

Чтобы выровнять эти элементы, один за другим, мы определяем их внутри fluidRow().

frow1 <- fluidRow(  valueBoxOutput("value1")  ,valueBoxOutput("value2")  ,valueBoxOutput("value3"))frow2 <- fluidRow(   box(    title = "Revenue per Account"    ,status = "primary"    ,solidHeader = TRUE     ,collapsible = TRUE     ,plotOutput("revenuebyPrd", height = "300px")  )  ,box(    title = "Revenue per Product"    ,status = "primary"    ,solidHeader = TRUE     ,collapsible = TRUE     ,plotOutput("revenuebyRegion", height = "300px")  ) )# combine the two fluid rows to make the bodybody <- dashboardBody(frow1, frow2)

В приведенном выше коде valueBoxOutput() используется для отображения информации KPI. valueBoxOutput() и plotOutput() написаны в Сервер часть, которая используется в части пользовательского интерфейса для отображения графика. box() является функцией, предоставленной shinydashboard чтобы уложить участок в коробку, которая имеет такие функции, как title, solidHeaderи collapsible. Определив два fluidRow() функционирует отдельно для модульности, мы объединяем их оба dashbboardBody().

Таким образом мы можем завершить интерфейс пользователя часть, содержащая заголовок, боковую панель и страницу, с кодом ниже:

#completing the ui part with dashboardPageui <- dashboardPage(title="This is my Page title", header, sidebar, body, skin='red')

Значение title в dashboardPage() это заголовок страницы/вкладки браузера, тогда как заголовок, определенный в dashboardHeader() отображается как заголовок информационной панели.

Создание заполненной информационной панели: Сервер

С интерфейс пользователя часть, мы создадим Сервер часть, где программа и логика позади valueBoxOutput() и plotOutput() прилагаются из renderValueBox() и renderPlot() соответственно. Они вложены внутрь a server function с input и output как его параметры Ценности внутри inputполученные от интерфейс пользователя (люблю textBox значение, Slider значение). Ценности внутри output присылаются в интерфейс пользователя (люблю plotOutput, valueBoxOutput).

Ниже приведена полная версия Сервер код:

# create the server functions for the dashboard  server <- function(input, output) {   #some data manipulation to derive the values of KPI boxes  total.revenue <- sum(recommendation$Revenue)  sales.account <- recommendation %>% group_by(Account) %>% summarise(value = sum(Revenue)) %>% filter(value==max(value))  prof.prod <- recommendation %>% group_by(Product) %>% summarise(value = sum(Revenue)) %>% filter(value==max(value))#creating the valueBoxOutput content  output$value1 <- renderValueBox({    valueBox(      formatC(sales.account$value, format="d", big.mark=',')      ,paste('Top Account:',sales.account$Account)      ,icon = icon("stats",lib='glyphicon')      ,color = "purple")    })  output$value2 <- renderValueBox({     valueBox(      formatC(total.revenue, format="d", big.mark=',')      ,'Total Expected Revenue'      ,icon = icon("gbp",lib='glyphicon')      ,color = "green")    })output$value3 <- renderValueBox({    valueBox(      formatC(prof.prod$value, format="d", big.mark=',')      ,paste('Top Product:',prof.prod$Product)      ,icon = icon("menu-hamburger",lib='glyphicon')      ,color = "yellow")     })#creating the plotOutput content  output$revenuebyPrd <- renderPlot({    ggplot(data = recommendation,            aes(x=Product, y=Revenue, fill=factor(Region))) +       geom_bar(position = "dodge", stat = "identity") + ylab("Revenue (in Euros)") +       xlab("Product") + theme(legend.position="bottom"                               ,plot.title = element_text(size=15, face="bold")) +       ggtitle("Revenue by Product") + labs(fill = "Region")  })output$revenuebyRegion <- renderPlot({    ggplot(data = recommendation,            aes(x=Account, y=Revenue, fill=factor(Region))) +       geom_bar(position = "dodge", stat = "identity") + ylab("Revenue (in Euros)") +       xlab("Account") + theme(legend.position="bottom"                               ,plot.title = element_text(size=15, face="bold")) +       ggtitle("Revenue by Region") + labs(fill = "Region")  })}

Пока мы определили обе основные части a Блестящий приложение — интерфейс пользователя и Сервер. Наконец, мы должны вызвать/запустить Блестящий, с интерфейс пользователя и Сервер как его параметры

#run/call the shiny appshinyApp(ui, server)Listening on http://127.0.0.1:5101

Все Р файл нужно сохранить как app.R внутри папки раньше запуск блестящего приложения. Также не забудьте разместить файл входных данных (в нашем случае recommendation.csv) в той же папке, что и app.R. Хотя есть другой действительный способ структурирования Блестящий приложение с двумя файлами ui.R и server.R(необязательно, global.R), он был проигнорирован в этой статье для краткости, поскольку он предназначен для начинающих.

После запуска файла Блестящий веб-приложение откроется в вашем браузере по умолчанию и будет выглядеть так, как на скриншотах ниже:

DmJJXakuaZj1lccAZw5Xv0guUmJjqXAScswX
69XDs0yXlKj47J6ZtOTUIC4WcKWc92dVHHgE

Надеюсь, на этом этапе у вас есть этот пример Блестящий веб-приложение запущено и работает. Использованный здесь код и графики доступны на моем Github. Если вам интересно Блестящийвы можете узнать больше из курса DataCamp «Создание веб-приложений на R с помощью Shiny Course».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *