Data Visualization:
Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization: Shiny Application
Olga Scrivner
Data Visualization:
Outline Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Introduction to web applications
2. Reactive Shiny and R framework
3. Shiny application demo - ITMS
4. Practice
Data Visualization:
Imperative Web Frameworks Shiny Application
Olga Scrivner
Web Framework
Shiny App
Traditional Model-View-Control
Practice Demo
Data Visualization:
Imperative Web Frameworks Shiny Application
Olga Scrivner
Web Framework
Shiny App
Traditional Model-View-Control
Practice Demo
The controller is essential and explicit: you have to specify
what to do when you receive user requests and what resources you
are going to mobilize to carry out the necessary tasks outlined in
the model (Ribeiro 2016)
Data Visualization:
Reactive Web Framework Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Reactive Systems are highly responsive, giving users
effective interactive feedback
http://www.reactivemanifesto.org/
http://littleactuary.github.io/blog/Web-application-framework-with-Shiny/
Data Visualization:
Reactive Architecture Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Reactive Framework and Data Science Shiny Application
Olga Scrivner
Web Framework
The impact of data scientists work depends on how well
Shiny App
others can understand their insights to take further actions Practice Demo
Benefit 1: Interactive display and manipulation of data
Benefit 2: No installation required
Benefit 3: Easy to develop and share with clients and
project teams
Benefit 4: Open source library
http://datascience.ibm.com/blog/shiny-a-data-scientist-best-friend/
Data Visualization:
Shiny Application Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Shiny is an R package for building interactive web
applications
2. Open-Sourced by RStudio 11/2012 on CRAN
3. Uses web sockets (new HTTP):
I Interactive communication sessions between the users
browser and a server without having to poll the server
for a reply
4. Entirely extensible - custom input/output
Data Visualization:
R: Historical Background Shiny Application
Olga Scrivner
Web Framework
R - an implementation of S programming language Shiny App
Practice Demo
I In 1970s John Chambers, Rick Becker, and Allan Wilks
develop S and S+ at Bell Labs
I Bell System monopoly was broken up in 1982
I Late 80s some attempt to commercialize S/S+ but
already too many non-commercial implementations
I Ross Ihaka and Robert Gentleman produce R in early
1990s
Data Visualization:
Shiny Library Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
http://littleactuary.github.io/blog/Web-application-framework-with-Shiny/
Data Visualization:
Shiny Gallery - Get Inspired Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
https://www.rstudio.com/products/shiny/shiny-user-showcase/
Data Visualization:
Interactive Text Mining Suite (Scrivner et al. Shiny Application
2016) Olga Scrivner
Web Framework
1. Web application for text processing and mining Shiny App
Practice Demo
2. Interactive natural language processing techniques
I Wordstops, stemming, text-preprocessing
3. High customization
Data Visualization:
Accessibility Shiny Application
Olga Scrivner
Web Framework
I PC, Mac, Linux, Smart Phones Shiny App
Practice Demo
I Chrome, Firefox, Safari
I ITMS Web site:
http://www.interactivetextminingsuite.com
Data Visualization:
ITMS Structure Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. File Uploads
I Upload files (txt, pdf, rdf, Google books API)
2. Data Preparation
I Data preprocessing (stopwords, stemming, metadata)
3. Data Visualization
I Word frequencies, cluster analysis, topic modeling
Data Visualization:
Stopwords Shiny Application
Olga Scrivner
Stopwords (e.g. the, and): Web Framework
Shiny App
Practice Demo
Data Visualization:
Manual Removal of Stopwords Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Stemming Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Word Cloud Representation Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Customization Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Topic Modeling Shiny Application
Olga Scrivner
Web Framework
Discovering underlying theme of collection from Science magazine Shiny App
1990-2000 (Blei 2012) Practice Demo
I LDA (Latent Dirichlet allocation)
I STM (Structural Topic model)
I Chronological topic visualization (lda): requires
metadata
Data Visualization:
Topic Modeling Tuning Shiny Application
Olga Scrivner
Web Framework
I Selection of topics (how many different themes)
Shiny App
I Selection of words per theme (how many words per Practice Demo
topic)
I Selection of iteration
Data Visualization:
Using Google Books API Shiny Application
Olga Scrivner
Select your search terms and submit Web Framework
Shiny App
Practice Demo
Current limitation is 40 books
Data Visualization:
Workshop Materials Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Rstudio
2. R
3. Shiny library
4. Some ideas are from http://deanattali.com/blog/
building-shiny-apps-tutorial/
Data Visualization:
R software Shiny Application
Olga Scrivner
Web Framework
Shiny App
R is a free software for data analysis, text mining and
Practice Demo
visualization.
To install R on Window:
1. Download the binary file for R
https://cran.r-project.org/bin/windows/base/
R-3.3.1-win.exe
2. Open the downloaded .exe file and Install R
To install R on Mac:
1. Download the appropriate version of .pkg file
https://cran.r-project.org/bin/macosx/
2. Open the downloaded .pkg file and Install R
Data Visualization:
R Studio Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
RStudio is a free user interface for R.
1. Install the appropriate RStudio version https:
//www.rstudio.com/products/rstudio/download/
2. Run it to install R-studio
Data Visualization:
R Studio Structure Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Installing Packages Shiny Application
Olga Scrivner
Web Framework
Shiny App
In your bottom left window - go to Packages Practice Demo
Data Visualization:
Selecting Packages - shiny Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Creating Scripts Shiny Application
Olga Scrivner
Web Framework
Create R File: File New File R Script Shiny App
Practice Demo
Data Visualization:
Execution - RUN Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
To execute your commands you need to click run
Type in the script and run:
library(shiny)
Data Visualization:
Shiny Demo Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
runExample("01 hello")
Data Visualization:
Shiny Demo Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Shiny Demo Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
UI.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Reactive Input/Output Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
I Input - things user can toggle
I Output - R objects that user can see, often depend on
inputs
Data Visualization:
Closing App Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Step 1 - Create New Web Shiny App Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Step 2 - Run App Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
UI Shiny Application
Olga Scrivner
shinyUI(fluidPage( Web Framework
# Application title Shiny App
titlePanel("Old Faithful Geyser Data"), Practice Demo
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
Data Visualization:
Modifying UI - Practice Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Change Title
2. Change Bins values: min, max and value
3. Save
4. RunApp
Data Visualization:
HTML Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
The UI script simply creates HTML
Data Visualization:
HTML Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
HTML tags:
http:
//shiny.rstudio.com/articles/tag-glossary.html
I h1() = header1
I br() = line break
I p() = paragraph
I hr() = line
Data Visualization:
Adding HTML Tag to UI.R - Practice Shiny Application
Olga Scrivner
shinyUI(fluidPage( Web Framework
# Application title Shiny App
titlePanel("My Title"), Practice Demo
h3("My subtitle"),
p("This is my first app!"),
br(),
hr(),
Data Visualization:
Adding HTML Tag to UI.R - Practice Shiny Application
Olga Scrivner
shinyUI(fluidPage( Web Framework
# Application title Shiny App
titlePanel("My Title"), Practice Demo
h3("My subtitle"),
p("This is my first app!"),
br(),
hr(),
RunApp
Data Visualization:
Layout Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
http:
//shiny.rstudio.com/articles/layout-guide.html
Data Visualization:
mainPanel Shiny Application
Olga Scrivner
Web Framework
mainPanel( plotOutput(distPlot)) Shiny App
Practice Demo
Lets add 3 tab panels: Plot, Summary, Tabel
Data Visualization:
tabsetPanel Shiny Application
Olga Scrivner
Web Framework
mainPanel(
Shiny App
tabsetPanel( Practice Demo
tabPanel("Plot", plotOutput("distPlot")),
tabPanel("Summary"),
tabPanel("Table")
)
)
Data Visualization:
tabsetPanel Shiny Application
Olga Scrivner
Web Framework
mainPanel(
Shiny App
tabsetPanel( Practice Demo
tabPanel("Plot", plotOutput("distPlot")),
tabPanel("Summary"),
tabPanel("Table")
)
)
Data Visualization:
Input Data Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Input Data Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Blog https:
//languagevariationsuite.wordpress.com/
2. Download csv file - movie metadata.csv
3. Place this file into the directory myshiny
Data Visualization:
New Input in UI.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
We will add fileInput function inside sidebarPanel:
NB: commas are important!
sidebarPanel(
sliderInput(.......),
fileInput()
)
Data Visualization:
New Input in UI.R Shiny Application
Olga Scrivner
Web Framework
fileInput(file1, Choose CSV File, Shiny App
Practice Demo
multiple=FALSE,
accept=c(text/csv,
text/comma-separated-values,text/plain,
.csv)
)
Data Visualization:
Reactive Function in Sever.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
myfile <- reactive({ Practice Demo
if (is.null(input$file1)){return()}
mydata <- read.csv(input$file1$datapath,
header=TRUE, sep=,)
return(mydata)
})
To use reactive data we will pass myfile() content to output
functions
Data Visualization:
New Output Function summary in Server.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
output$summary <- renderPrint({
summary(myfile())
})
Data Visualization:
New Output Function table in Server.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
output$table <- renderDataTable({
myfile()
})
Data Visualization:
Linking summary and table with UI.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
tabsetPanel(
tabPanel("Plot", plotOutput("distPlot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", dataTableOutput("table"))
)
Data Visualization:
Linking summary and table with UI.R Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
tabsetPanel(
tabPanel("Plot", plotOutput("distPlot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", dataTableOutput("table"))
)
RunApp
Data Visualization:
Testing CSV Upload Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
One more IF-Statement - Server.R Shiny Application
Olga Scrivner
We want to do a histogram for csv file:
Web Framework
if (condition) {do..} else {do...} Shiny App
Practice Demo
Data Visualization:
One more IF-Statement - Server.R Shiny Application
Olga Scrivner
We want to do a histogram for csv file:
Web Framework
if (condition) {do..} else {do...} Shiny App
output$distPlot <- renderPlot({ Practice Demo
if (is.null(input$file1)) {
....
hist(x, breaks = bins, col = darkgray, border =
white)
}
Data Visualization:
One more IF-Statement - Server.R Shiny Application
Olga Scrivner
We want to do a histogram for csv file:
Web Framework
if (condition) {do..} else {do...} Shiny App
output$distPlot <- renderPlot({ Practice Demo
if (is.null(input$file1)) {
....
hist(x, breaks = bins, col = darkgray, border =
white)
}
else{
x <- myfile()$budget
bins <- seq(min(x), max(x), length.out = input$bins
+ 1)
hist(x, breaks = bins, col=red,
main = My New Histogram)
}
})
Data Visualization:
RunApp Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Deployment Options Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Share server.r and ui.r
2. Host on shinyapps.io
3. Host on Shiny server
Data Visualization:
Deploy with shinyapps.io Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
I www.shinyapps.io
I sign up for an account.
I Publish Application button in RStudio and follow
instructions
Data Visualization:
Deploy with shinyapps.io Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
My shinyapps.io Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
My shinyapps.io Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
Data Visualization:
Useful resources Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
1. Shiny official tutorial -
http://shiny.rstudio.com/tutorial
2. Cheat sheet - http://shiny.rstudio.com/images/
shiny-cheatsheet.pdf
3. Publish your app free - http://www.shinyapps.io
4. Examples -http://www.showmeshiny.com/
5. Tutorial by Dean Attali - http://deanattali.com/
blog/building-shiny-apps-tutorial/
Data Visualization:
Thank you! Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
My email: obscrivn@indiana.edu
Data Visualization:
Credits Shiny Application
Olga Scrivner
Web Framework
Shiny App
Practice Demo
https://github.com/IBMDataScience/dsx-shiny-apps
http://www.slideshare.net/SarahAerni/
data-science-as-a-commodity-use-madlib-r-other-oss-tools-for-data-
http://www.unixstickers.com/image/data/stickers/
react/badge/React-JS.sh.png
https://github.com/rstudio/shiny/issues/250
http://www.slideshare.net/ilio-catallo/
spring-mvc-the-basics