library(shiny)
# interfata utilizator
ui <- fluidPage('Text oarecare')
# server
server <- function(input, output) {}
# rulare
shinyApp(ui = ui, server = server)
text care poate fi inclus intr-un panel pe pagina
textul e inclus intr-un tag div (o sectiune/bloc din document HTML)
textOutput('text')
<div id="text" class="shiny-text-output"></div>
textOutput("caption", inline=TRUE)
<span id="caption" class="shiny-text-output"></span>
returneaza un obiect R care poate fi folosit ca si argument a functiei cat() - intuitiv: linie de text
x=c(0,1)
y=c('dada','fafadsf')
cat(x,y)
## 0 1 dada fafadsf
z=c(x,y)
z
## [1] "0" "1" "dada" "fafadsf"
z=cat(z)
## 0 1 dada fafadsf
iar in Shiny:
library(shiny)
ui <- fluidPage(
h3('text oarecare'),
textInput('textinput', value='', label='introduceti ceva text...'),
textOutput('text')
)
server <- function(input, output){
output$text <- renderText({
x=c(0,1)
y=input$textinput
z='*** text fix, nereactiv ***'
cat(x,y,z)
z=c(x,y, z)
z
})
}
shinyApp(ui, server)
returneaza un element de text verbatim care e inclus pe pagina web folosind tag-ul pre
afiseaza o LISTA in format text
Exempu: Incarcati un fisier text si afisati continutul sau.
library(shiny)
ui <- fluidPage(
fileInput(inputId = 'fisier', multiple=FALSE, label='Alegeti un fisier text',
buttonLabel = 'Navigati :)',
placeholder = 'si incarcati un fisier'),
verbatimTextOutput('text')
)
server <- function(input, output){
output$text <- renderPrint({
z <- read.csv(input$fisier$datapath, header=FALSE)
z
})
}
shinyApp(ui, server)
un element de tip tabel de inclus in pagina web
returneaza un element reactiv potrivit de reprezentat ca si tabel
Exemplu: Sa se citeasca un tabel si sa se afiseze continutul sau in format de tabel
library(shiny)
ui <- fluidPage(
fileInput(inputId = 'fisier', multiple=FALSE, label='Alegeti un fisier text',
buttonLabel = 'Navigati :)',
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv"),
placeholder = 'si incarcati un fisier .csv'),
tableOutput('tabel')
)
server <- function(input, output){
output$tabel <- renderTable({
z <- read.csv(input$fisier$datapath, header=TRUE)
z
})
}
shinyApp(ui, server)
sau
output$tabel <- renderTable({
inFile <- input$fisier
if (is.null(inFile))
return(NULL)
z <- read.csv(input$fisier$datapath, header=TRUE)
z
}, striped = TRUE)
sau
server <- function(input, output){
output$tabel <- renderTable({
inFile <- input$fisier
if (is.null(inFile))
return(NULL)
z <- read.csv(input$fisier$datapath, header=TRUE)
z
}, hover = TRUE)
}
sau
output$tabel <- renderTable({
inFile <- input$fisier
if (is.null(inFile))
return(NULL)
z <- read.csv(input$fisier$datapath, header=TRUE)
z
}, bordered = TRUE)
sau
output$tabel <- renderTable({
inFile <- input$fisier
if (is.null(inFile))
return(NULL)
z <- read.csv(input$fisier$datapath, header=TRUE)
z
}, spacing='xs')
sau
server <- function(input, output){
output$tabel <- renderTable({
inFile <- input$fisier
if (is.null(inFile))
return(NULL)
z <- read.csv(input$fisier$datapath, header=TRUE)
z
}, spacing='xs', align='clllcrrcc')
}
Optiuni:plaseaza o imagine pe ui
- width='100%' - height='400px'
returneaza o imagine redata de plotOutput()
Exemplu: Incarcati tabelul diamonds si reprezentati un nor de puncte cu variabilele carat si price, colorate diferit in functie de o variabila de tip factor din tabel la alegerea utilizatorului
library(shiny)
library(ggplot2)
ui <- fluidPage(
radioButtons(inputId = 'variabila', label='alegeti variabila pentru colorare!',
choices=c('cut'='2','color'='3','clarity'='4'), selected='2'),
plotOutput('figura', width='50%')
)
server <- function(input, output){
output$figura <- renderPlot({
if (input$variabila=='2'){
ggplot(aes(x=carat, y=price), data=diamonds)+
geom_point(aes(color=cut))
}
else if (input$variabila=='3'){
ggplot(aes(x=carat, y=price), data=diamonds)+
geom_point(aes(color=color))
}
else ggplot(aes(x=carat, y=price), data=diamonds)+
geom_point(aes(color=clarity))
})
}
shinyApp(ui, server)
renderImage() si plotImage() functioneaza la fel, pentru diferente consultati documentatia Shiny.
Exemplu: incarcati un fisier cu o imagine si o afisati.
library(shiny)
ui <- fluidPage(
fileInput(inputId = 'fisier', label='alegeti o imagnine'),
imageOutput('imagine')
)
server <- function(input, output){
output$imagine <- renderImage({
list(src=input$fisier$datapath, alt='o imagine incarcata', width='100%')
})
}
shinyApp(ui, server)
imaginile trebuie salvate local intr-un director numit www.
library(shiny)
ui <- fluidPage(
img(src='Chopinamqsop53.jpg', width='100%')
)
server <- function(input, output){
}
shinyApp(ui, server)
Construiti aplicatii Shiny care sa:
Citeasca un tabel si sa afiseze variabilele lui.
Citeasca un tabel si sa afiseze structura sa (verbatim).
Citeasca un tabel si sa afiseze primele 10 linii si ultimele 10 linii.
Citeasca un tabel si un numar n si sa afiseze primele n linii din tabel.
Citeasca un tabel; sa afiseze lista de variabile din care utilizatorul sa selecteze mai multe iar apoi sa afiseze variabilele selectate ( se foloseste outputUI si renderUI)
Incarca tabelul diamonds si reprezinta grafic boxplot-uri pentru variabilele x, y si z in functie de o variabila factor la alegere.
Reprezinta grafic temperatura medie in Cluj Napoca intr-un interval la alegerea utilizatorului. Pentru a obtine istoricul temperaturilor cautati pe internet ( Cei care trimit rezolvarea acestui exercitiu pana la miezul noptii primesc un punct in plus la examen! )
Adaugati un logo (la alegere, in lipsa de altceva logo R ) la toate aplicatiile de mai sus.