de AMR

Construiți primul tablou de bord al aplicației web folosind Shiny și R

Construiti primul tablou de bord al aplicatiei web folosind Shiny
Veți învăța să construiți acest tablou de bord.

Unul dintre cadourile frumoase pe care le are R (pe care Python l-a ratat, până când liniuță) este Lucios. Lucios este un R pachet care facilitează crearea de aplicații web interactive direct din R. Tablourile de bord sunt populare, deoarece sunt bune în a ajuta companiile să facă cunoștințe din datele existente.

În acest post, vom vedea cum să folosim Lucios pentru a construi un simplu tablou de bord al veniturilor din vânzări. Vei avea nevoie R instalat.

Încărcarea coletelor în R

Pachetele de care aveți nevoie trebuie descărcate separat și instalat folosind R. Toate pachetele enumerate mai jos pot fi instalate direct din CRAN, puteți alege ce oglindă CRAN să utilizați. Dependențele pachetelor vor fi, de asemenea, descărcate și instalate implicit.

Odată ce pachetele sunt instalate, trebuie să le încărcați în R sesiune. Comenzile de bibliotecă și de solicitare sunt utilizate și, din nou, dependențele pachetelor sunt încărcate automat de către R.

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

Exemplu de fișier de intrare

Deoarece un tablou de bord are nevoie de date de intrare pentru a fi vizualizate, vom folosi recomandare.csv ca exemplu de date de intrare în tabloul nostru de bord. Deoarece acesta este un fișier .csv, a fost utilizată comanda read.csv. Primul rând din .csv este un rând de titlu, deci se folosește header = T. Există două moduri în care puteți obține recomandare.csv în sesiunea dvs. curentă de R:

  1. Deschide acest link – recomandare.csv și salva (Ctrl + S) în directorul de lucru curent, unde este salvat acest cod R. Apoi următorul cod va funcționa perfect.
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. În loc să citiți .csv de pe computerul dvs. local, îl puteți citi și de pe un URL (web) folosind aceeași funcție citeste.csv. Deoarece acest .csv este deja încărcat pe Github, putem folosi acel link în citeste.csv pentru a citi fișierul.

recommendation <- read.csv('https://raw.githubusercontent.com/amrrs/sample_revenue_dashboard_shiny/master/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

Prezentare generală a Shiny

Fiecare Lucios aplicația are două secțiuni principale: UI și Server. UI conține codul pentru front-end, cum ar fi butoane, imagini grafice, file și așa mai departe. Server conține codul pentru back-end, cum ar fi recuperarea datelor, manipularea și lupta.

Construiti primul tablou de bord al aplicatiei web folosind Shiny
Amabilitatea imaginii: Slideplayer

În loc de a folosi pur și simplu numai Lucios, o cuplăm cu shinydashboard. shinydashboard este un R pachet a cărui sarcină este să ușureze, așa cum sugerează și numele, construirea tablourilor de bord cu Lucios.

Crearea unui tablou de bord populat: UI

Partea UI a unui Lucios aplicație construită cu shinydashboard are 3 elemente de bază înfășurate în comanda dashboardPage (). Cel mai simplu Lucios cod cu shinydashboard

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

oferă această aplicație

1612188306 39 Construiti primul tablou de bord al aplicatiei web folosind Shiny
Amabilitatea imaginii: rstudio

Să populăm dashboardHeader() și dashboardSidebar(). Codul conține comentarii, prefixate cu #.

#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 = "https://www.salesforce.com")  ))

Elementele de interfață pe care am dori să le afișăm în tabloul nostru de bord sunt completate dashboardPage() . Deoarece exemplul este un tablou de bord al veniturilor din vânzări, permiteți-ne să afișăm trei casete cu indicatori cheie de performanță (KPI) în partea de sus, care reprezintă un rezumat rapid, urmate de două parcele de casete pentru o vizualizare detaliată.

Pentru a alinia aceste elemente, unul câte unul, le definim în interior 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)

În codul de mai sus, valueBoxOutput() este utilizat pentru a afișa informațiile KPI. valueBoxOutput() și plotOutput() sunt scrise în Server parte, care este utilizată în partea UI pentru a afișa un grafic. box() este o funcție oferită de shinydashboard pentru a închide complotul într-o cutie care are caracteristici precum title, solidHeaderși collapsible. După ce am definit două fluidRow() funcționează individual, de dragul modularității, le combinăm pe ambele în dashbboardBody().

Astfel putem completa UI parte, cuprinzând antetul, bara laterală și pagina, cu codul de mai jos:

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

Valoarea a title în dashboardPage() este titlul paginii / filei browserului, în timp ce titlul este definit în dashboardHeader() este vizibil ca titlul tabloului de bord.

Crearea unui tablou de bord populat: Server

Cu UI parte, vom crea Server partea în care programul și logica din spate valueBoxOutput() și plotOutput() se adaugă cu renderValueBox() și renderPlot() respectiv. Acestea sunt închise în interiorul unui server function , cu input și output ca parametrii săi. Valori în interior inputsunt primite de la UI (ca textBox valoare, Slider valoare). Valori în interior output sunt trimise la UI (ca plotOutput, valueBoxOutput).

Mai jos este complet Server cod:

# 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")  })}

Până în prezent, am definit ambele părți esențiale ale unui Lucios aplicație – UI și Server. În cele din urmă, trebuie să apelăm / să rulăm Lucios, cu UI și Server ca parametrii săi.

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

Intregul R fișierul trebuie salvat ca app.R în interiorul unui dosar inainte de rularea aplicației strălucitoare. De asemenea, nu uitați să puneți fișierul de date de intrare (în cazul nostru, recommendation.csv) în același folder ca app.R. Deși există un alt mod valid de structurare a Lucios aplicație cu două fișiere ui.R și server.R(opțional, global.R), a fost ignorat în acest articol de dragul conciziei, deoarece acest lucru se adresează începătorilor.

La rularea fișierului, fișierul Lucios aplicația web se va deschide în browserul dvs. implicit și va arăta similar cu capturile de ecran de mai jos:

1612188307 782 Construiti primul tablou de bord al aplicatiei web folosind Shiny
1612188307 636 Construiti primul tablou de bord al aplicatiei web folosind Shiny

Sperăm că în acest stadiu aveți acest exemplu Lucios aplicația web funcțională. Codul și parcelele utilizate aici sunt disponibile pe Github al meu. Dacă sunteți interesat de Lucios, puteți afla mai multe de la DataCamp Construirea de aplicații web în R cu Shiny Course.