Δημιουργήστε τον πρώτο σας πίνακα ελέγχου εφαρμογών ιστού χρησιμοποιώντας το Shiny και το R

Ένα από τα όμορφα δώρα που έχει ο R (που έχασε ο Python, μέχρι το dash) είναι το Shiny . Λαμπερό είναι ένα R πακέτο που καθιστά εύκολο για την κατασκευή διαδραστικών εφαρμογών web απευθείας από Ε . Οι πίνακες ελέγχου είναι δημοφιλείς, καθώς βοηθούν τις επιχειρήσεις να αντλήσουν πληροφορίες από τα υπάρχοντα δεδομένα.

Σε αυτήν την ανάρτηση, θα δούμε πώς να αξιοποιήσουμε το Shiny για να δημιουργήσουμε έναν απλό πίνακα ελέγχου εσόδων από πωλήσεις. Θα χρειαστείτε εγκατεστημένο το R.

Φόρτωση πακέτων σε R

Τα πακέτα που χρειάζεστε, πρέπει να κατεβάσετε ξεχωριστά, και να εγκατασταθεί χρησιμοποιώντας Ε . Όλα τα πακέτα που αναφέρονται παρακάτω μπορούν να εγκατασταθούν απευθείας από το CRAN, μπορείτε να επιλέξετε ποιον CRAN καθρέφτη να χρησιμοποιήσετε. Οι εξαρτήσεις πακέτων θα ληφθούν και θα εγκατασταθούν από προεπιλογή.

Μόλις εγκατασταθούν τα πακέτα, πρέπει να τα φορτώσετε στη συνεδρία R σας . Η βιβλιοθήκη και απαιτούν οι εντολές χρησιμοποιούνται και, πάλι, εξαρτήσεις πακέτο φορτώνονται επίσης αυτόματα από R .

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

Δείγμα αρχείου εισαγωγής

Καθώς ο πίνακας ελέγχου χρειάζεται δεδομένα εισαγωγής για να απεικονίσει, θα χρησιμοποιήσουμε το suggest.csv ως παράδειγμα δεδομένων εισαγωγής στον πίνακα ελέγχου. Επειδή πρόκειται για αρχείο .csv, χρησιμοποιήθηκε η εντολή read.csv. Η πρώτη σειρά στο .csv είναι μια γραμμή τίτλου, οπότε χρησιμοποιείται η κεφαλίδα = T. Υπάρχουν δύο τρόποι με τους οποίους μπορείτε να εισάγετε το αρχείο suggest.csv στην τρέχουσα συνεδρία R:

  1. Ανοίξτε αυτόν τον σύνδεσμο - suggest.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 (web) χρησιμοποιώντας την ίδια λειτουργία read.csv. Δεδομένου ότι αυτό το .csv έχει ήδη μεταφορτωθεί στο Github μου, μπορούμε να χρησιμοποιήσουμε αυτόν τον σύνδεσμο στο read.csv για να διαβάσουμε το αρχείο.

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

Επισκόπηση του Shiny

Κάθε εφαρμογή Shiny έχει δύο κύριες ενότητες: UI και Server . Το UI περιέχει τον κωδικό για front-end όπως κουμπιά, γραφικά, καρτέλες και ούτω καθεξής. Ο διακομιστής περιέχει τον κωδικό για back-end, όπως ανάκτηση δεδομένων, χειρισμό και αντιμετώπιση.

Αντί να χρησιμοποιούμε μόνο το Shiny , το συνδυάζουμε με το shinydashboard . Το shinydashboard είναι ένα πακέτο R του οποίου η δουλειά είναι να διευκολύνει, όπως υποδηλώνει το όνομα, να κατασκευάζει πίνακες ταμπλό με το Shiny .

Δημιουργία ενός συμπληρωμένου πίνακα ελέγχου: UI

Το τμήμα διεπαφής χρήστη μιας εφαρμογής Shiny που έχει κατασκευαστεί με shinydashboard έχει 3 βασικά στοιχεία τυλιγμένα στην εντολή dashboardPage (). Ο απλούστερος Shiny κώδικας με shinydashboard

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

δίνει αυτήν την εφαρμογή

Ας συμπληρώσουμε 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 = "//www.salesforce.com") ))

Συμπληρώνονται τα στοιχεία διεπαφής χρήστη που θα θέλαμε να εμφανίζονται στον πίνακα ελέγχου 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()είναι ο τίτλος της σελίδας του προγράμματος περιήγησης / tab, ενώ ο τίτλος που ορίζεται στο dashboardHeader()είναι ορατό ως τίτλος ταμπλό.

Δημιουργία ενός συμπληρωμένου πίνακα ελέγχου: Διακομιστής

Με το τμήμα διεπαφής χρήστη , θα δημιουργήσουμε το τμήμα διακομιστή όπου το πρόγραμμα και η λογική πίσω valueBoxOutput()και plotOutput()θα προστεθούν με renderValueBox()και renderPlot()αντίστοιχα. Αυτά περικλείονται μέσα σε ένα 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 % 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") })}

Μέχρι στιγμής, έχουμε ορίσει και τα δύο βασικά μέρη μιας εφαρμογής Shiny - UI και Server . Τέλος, πρέπει να καλέσουμε / τρέξουμε το Shiny ,με UI και Server ως παραμέτρους.

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

Ολόκληρο το αρχείο R πρέπει να αποθηκευτεί ως app.Rμέσα σε ένα φάκελο προτού εκτελέσετε τη λαμπερή εφαρμογή. Επίσης, θυμηθείτε να βάλετε το αρχείο δεδομένων εισαγωγής (στην περίπτωσή μας, recommendation.csv)μέσα στον ίδιο φάκελο με app.R. Ενώ υπάρχει ένας άλλος έγκυρος τρόπος για τη δομή της εφαρμογής Shiny με δύο αρχεία ui.Rκαι server.R(προαιρετικά global.R), έχει αγνοηθεί σε αυτό το άρθρο για χάρη συντομία δεδομένου ότι αυτό απευθύνεται σε αρχάριους.

Κατά την εκτέλεση του αρχείου, η εφαρμογή Shiny web θα ανοίξει στο προεπιλεγμένο πρόγραμμα περιήγησής σας και θα μοιάζει με τα παρακάτω στιγμιότυπα οθόνης:

Ας ελπίσουμε ότι, σε αυτό το στάδιο, έχετε αυτό το παράδειγμα Shiny web app σε λειτουργία. Ο κωδικός και τα οικόπεδα που χρησιμοποιούνται εδώ είναι διαθέσιμα στο Github μου. Εάν σας ενδιαφέρει το Shiny , μπορείτε να μάθετε περισσότερα από το DataCamp's Building Web Applications in R with Shiny Course