Készítse el első webalkalmazás-irányítópultját a Shiny and R használatával

Az egyik gyönyörű ajándék, amely R-nek van (amit a Python hiányzott, pillanatig) a Fényes . A Shiny egy R csomag, amely megkönnyíti az interaktív webalkalmazások építését közvetlenül az R-ből . Az irányítópultok népszerűek, mivel jól segítik a vállalkozásokat abban, hogy betekintést nyerjenek a meglévő adatokba.

Ebben a bejegyzésben meglátjuk, hogyan lehet a Shiny- t felhasználni egy egyszerű árbevételi irányítópult felépítéséhez. Szüksége lesz R telepítésre.

Csomagok betöltése R-ben

A szükséges csomagokat külön kell letölteni és telepíteni az R használatával . Az alább felsorolt ​​összes csomag közvetlenül telepíthető a CRAN-ból, kiválaszthatja, hogy melyik CRAN-tükröt használja. A csomagfüggőségeket szintén alapértelmezés szerint letöltjük és telepítjük.

A csomagok telepítése után be kell töltenie őket az R munkamenetbe. A könyvtár és szükség parancsokkal, és ismét csomag függőségeket is betöltött automatikusan R .

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

Minta bemeneti fájl

Mivel az irányítópultnak egy bemeneti adatra van szüksége a megjelenítéshez, az Suos.csv fájlt fogjuk használni az irányítópultunk bemeneti adatainak példaként. Mivel ez egy .csv fájl, a read.csv parancsot használták. A .csv első sora címsor, tehát a header = T értéket használjuk. Kétféleképpen juthat be az Suos.csv fájlba az aktuális R munkamenetbe:

  1. Nyissa meg ezt az - reference.csv linket, és mentse el (Ctrl + S) a jelenlegi munkakönyvtárába, ahová ezt az R kódot elmentette. Ekkor a következő kód tökéletesen fog működni.
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. Ahelyett, hogy a .csv fájlt elolvassa a helyi számítógépről, elolvashatja egy URL-ről (webről) is, a read.csv azonos funkcióval . Mivel ezt a .csv fájlt már feltöltöttem a Github-ra, a read.csv fájlban található linket használhatjuk a fájl elolvasására.

recommendation <- read.csv('//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

A Shiny áttekintése

Minden Shiny alkalmazásnak két fő szakasza van: UI és Server . A kezelőfelület tartalmazza a kezelőfelület, például gombok, ábrák, lapok stb. Kódját. A kiszolgáló a háttér-kódot tartalmazza, mint például az adatok visszakeresése, manipulálása és bonyolítása.

Ahelyett, hogy egyszerűen csak a Shiny alkalmazást használnánk , a shinydashboard- szal párosítjuk . A shinydashboard egy R csomag, amelynek feladata, hogy megkönnyítse, amint a neve is mutatja, a műszerfalak felépítését a Shiny alkalmazással .

Feltöltött irányítópult létrehozása: UI

A Shinydashboard segítségével épített Shiny alkalmazás felhasználói felületének 3 alapeleme van a dashboardPage () parancsba csomagolva. A legegyszerűbb Shiny kód shinydashboard-tal

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

adja ezt az alkalmazást

Töltsük be dashboardHeader()és dashboardSidebar(). A kód megjegyzéseket tartalmaz, előtaggal #.

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

A kezelőfelületen megjeleníteni kívánt felhasználói felület elemei feltöltődnek dashboardPage(). Mivel a példa az árbevétel irányítópultja, mutassunk a tetején három kulcsfontosságú teljesítménymutatót (KPI), amelyek egy gyors összefoglalót képviselnek, majd két dobozdiagramot adunk a részletes nézethez.

Ezen elemek egyenként történő összehangolásához belül definiáljuk őket 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)

A fenti kódban valueBoxOutput()a KPI információk megjelenítésére szolgál. valueBoxOutput()és plotOutput()a Kiszolgáló részbe vannak írva , amelyet az UI rész használ egy diagram megjelenítésére. box()egy olyan funkció által biztosított shinydashboard, hogy magába zárja a telek egy dobozba, hogy funkciók, mint a title, solidHeaderés collapsible. Miután fluidRow()a modularitás érdekében két funkciót egyenként definiáltunk , mindkettőt egyesítjük benne dashbboardBody().

Így kitölthetjük a fejlécet, az oldalsávot és az oldalt tartalmazó felhasználói felület részt az alábbi kóddal:

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

Az titlein dashboardPage()értéke a böngésző oldalának / fülének címe, míg a ben definiált dashboardHeader()cím irányítópult címeként látható.

Feltöltött irányítópult létrehozása: Kiszolgáló

A UI része felett, akkor hozza létre a kiszolgáló rész, ahol a program és a logikája valueBoxOutput(), és plotOutput()hozzáadunk renderValueBox()és renderPlot()rendre. Ezek egy server function, a inputés output paramétereként vannak bezárva . A belső értékeket inputaz UI kapja (például textBox érték, Slider érték). Értékek belül output küldik UI (például plotOutput, valueBoxOutput).

Az alábbiakban a teljes szerverkód található :

# 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 % group_by(Account) %>% summarise(value = sum(Revenue)) %>% filter(value==max(value)) prof.prod % 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") })}

Eddig meghatároztuk a Shiny alkalmazás mindkét lényeges részét - a felhasználói felületet és a szervert . Végül hívnunk / futtatnunk kell a Fényeset ,az UI és a Server paraméterekkel.

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

A fényes alkalmazás futtatása előtt a teljes R fájlt app.Regy mappába kell menteni . Ne felejtse el feltenni a bemeneti adatfájlt (esetünkben ugyanabba a mappába, mint a . Bár van egy másik érvényes módja a Shiny alkalmazás két fájllal történő strukturálására és (opcionálisan ), a cikkben ezt figyelmen kívül hagyták. rövidség, mivel ez a kezdőknek szól.recommendation.csv)app.Rui.Rserver.Rglobal.R

A fájl futtatásakor a Shiny webalkalmazás megnyílik az alapértelmezett böngészőben, és hasonlóan néz ki, mint az alábbi képernyőképek:

Hopefully, at this stage, you have this example Shiny web app up and running. The code and plots used here are available on my Github. If you are interested in Shiny, you can learn more from DataCamp’s Building Web Applications in R with Shiny Course.