SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Aplicaciones interactivas dise adas con shiny
Julio Mulero
julio.mulero@ua.es
Departamento de Matem ticas
Universidad de Alicante
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 1 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 2 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 3 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Qu es shiny
Shiny
Shiny es un paquete de R que permite construir aplicaciones web interactivas a
partir de los scripts de R.
Instalaci n
Si a n no tienes instalado Shiny:
i n stall . p a c k a g e s ( " s h in y " )
l i brary ( " s h in y " )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 4 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Qu es shiny
Ejemplos de aplicaciones
s y ste m . f i l e ( " e x a m p l e s " , p ackage = " s h in y " )
r u nE x a m pl e ( " 01 _ h e ll o " ) # un h i s togr am a
r u nE x a m pl e ( " 02 _ t e x t " ) # t a bla s y d a t a fra me s
r u nE x a m pl e ( " 03 _ r e a c tiv it y " ) # u n a e xpres i n r e a c t i va
r u nE x a m pl e ( " 04 _ m p g " ) # v a r i abl e s g l o b a l e s
r u nE x a m pl e ( " 05 _ s l iders " ) # b a rras d e s liza ble s
run Example (" 06 _ tabsets ") # varias pesta as
run Example (" 07 _ widgets ") # textos de ayuda y botones
run Example (" 08 _ html ") # Shiny desde HTML
r u nE x a m pl e ( " 09 _ u p loa d " ) # c a rga de a r c h i v o s
r u nE x a m pl e ( " 10 _ d o w n l o a d " ) # d e s c a r g a de a r c h i v o s
r u nE x a m pl e ( " 11 _ t i me r " ) # d a y h o r a
Ver galer a Rstudio
Ver galer a Showmeshiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 5 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Qu es shiny
Inter s de shiny en la docencia
La interactividad de estas aplicaciones permite manipular los datos sin
tener que manipular el c digo. De hecho, en la naturaleza de shiny
subyace un concepto a n m s fuerte: la reactividad (habr a que comentar
estas dos caracter sticas).
Las aplicaciones web creadas con shiny pueden estar enfocadas a
numerosos mbitos: investigaci n, profesional o, por supuesto, la docencia.
Estas aplicaciones pueden abrirse desde el propio ordenador, una tablet o
incluso el m vil.
En particular, shiny permite dise ar recursos docentes que ayuden al
profesor mostrar los contenidos de las asignaturas en clase.
Ver correlaci n
Estos recursos pueden facilitar a los alumnos la pr ctica y la ejercitaci n
de los problemas desde su propia casa con ejercicios de car cter diverso.
Ser n m s o menos complejos dependiendo de las intervenciones del sujeto
y del modo en que realice los ejercicios, haci ndole saber a este cual es su
nivel de desarrollo o aprendizaje.
Ver problemas
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 6 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Creando un proyecto shiny
File Create project from:
New project d New directory
Project Type:
d Shiny Web Application
El resultado es un directorio nuevo con el nombre que hayamos elegido en el que
aparecen dos archivos (ui.R y server.R).
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 7 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Creando un proyecto shiny
Una app de shiny consta (al menos) de dos archivos:
un script para la interfaz del usuario, (user-interface, ui.R), que recibe los inputs y
muestra los outputs, y
un script para los c lculos (server.R), que realiza los c lculos necesarios.
Inputs
z
$
ui.R server.R
,
Outputs
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 8 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Un primer ejemplo
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 9 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
El archivo u i . R
l i brary ( s h in y )
# UI
s h in yU I ( f l u i dP a g e (
# T tulo de la aplicaci n
t i t l eP a n el ( " L o s h i s to gram a s " ) ,
# Columna lateral con una barra d e slizable para el n mero de
# i n tervalos
s i d e ba rL a y o u t (
s i d e ba rP a n e l (
s l i d e rI n p u t ( " b i n s " ,
" N m e r o de i n t e rva lo s : " ,
min = 1 ,
max = 50 ,
value = 30)
),
# Panel p r incipal con el g r fico generado
main Panel (
p l o tO u t pu t ( " d i s tP l ot " )
)
)
J u
)
lio
)M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 10 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
El archivo s e r v e r . R
l i brary ( s h in y )
# SERVER
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
# La e x p resi n que obtiene el h i stograma es
# un r e n d e rP l o t q u e q uiere d eci r q u e :
#
# 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e
# c u a ndo el input c a m bie .
# 2) El o u tpu t es un gr f i c o .
o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({
x <- faithful [, 2] # Old Faithful Geyser data
bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1)
# Dibujar el h i stograma con dicho n mero de i n tervalos
hist (x, breaks = bins , col = ' darkgray ', border = ' white ',
m a i n = ' H i s t og ram a ' )
})
})
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 11 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Lanzando la aplicaci n
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 12 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Lanzando la aplicaci n
El c digo de la aplicaci n shiny puede estar tambi n dentro de un solo script y puede
ejecutarse de la siguiente manera:
l i brary ( s h in y )
# UI
u < - s h in yU I ( T i p oD eP a g i n a (
))
# SERVER
s < - s h i n yS e r ve r ( f u n c t io n ( i n p ut , o utpu t ) {
})
s h i n yA p p ( ui = u , s e rve r = s )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 13 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Compartiendo la aplicaci n
shinyapps: 440$ al a o una suscripci n b sica / 1100$ al a o una suscripci n
est ndar.
Shiny server!: gratuito .
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 14 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 15 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
El dise o de la interfaz
Todos los aspectos del dise o se indican en el archivo ui.R.
El dise o de la interfaz de usuario est relacionado con:
1 La e s t ru c t u ra (barras laterales, paneles, pesta as, etc.).
2 El a s p e c t o (colores, tipos de fuentes, etc.).
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 16 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 17 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
La estructura de la interfaz
La estructura de la interfaz de usuario puede ser de tres tipos:
pageWithSideBar (deprecated=obsoleto, fluidPage es m s exible).
fluidPage.
fixedPage (igual que el anterior, pero fuerza la anchura de la p gina web).
En cualquier caso:
titlePanel: t tulo de la aplicaci n.
sidebarLayout:
sidebarPanel: barra lateral de contenido.
mainPanel: panel principal de contenido.
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 18 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(1) La estructura de la interfaz
La estructura b sica es:
l i brary ( s h in y )
# UI
s h in yU I ( f l u i dP a g e(
# T t u l o de la a p l i c a c i n
t i t l eP a n e l ( " T t u l o " ) ,
# C o n t enid o de la a p l i c a c i n
s i d e b arL a y o u t (
# P a ne l l a tera l
sidebar Panel (" T tulo d e l panel lateral ",
C o ntenido
),
# P a ne l p r i n cipa l
m a i nP a n e l (
C o ntenido
)
)
))
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 19 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(2) La estructura de la interfaz
Se pueden incluir las de contenido con fluidRow, column. La funci n wellPanel
crea un panel lateral.
s h in yU I ( f l u i dP a g e (
t i t l eP a n e l ( " H e ll o S h in y ! " ) ,
f l u i dR o w (
c o lum n (3 ,
w e l lP a n e l (
s l i d e rI n p u t ( " o b s 1 " , " N u m b er of o b s er vati on s : " ,
m i n = 1 , m a x = 1 00 0 , v a lu e = 5 0 0 )
) ) ,
c o lum n (8 ,
p l o tO u t pu t ( " d i s tP l o t1 " )
) ) ,
f l u i dR o w (
c o lum n (2 ,
w e l lP a n e l (
s l i d e rI n p u t ( " o b s 2 " , " N u m b er of o b s er vati on s : " ,
m i n = 1 , m a x = 1 00 0 , v a lu e = 5 0 0 )
) ) ,
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 20 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(3) La estructura de la interfaz
Se pueden incluir diferentes pesta as con una misma barra lateral usando las
funciones tabsetPanel y tabPanel.
m a i nP a n el (
t a b s e tP a n e l (
t a bP a n e l ( " P l o t " , p l o tO u t pu t ( " p l ot " ) ) ,
tab Panel (" Summary ", v e rbatim T e x t O u t p u t (" summary " ) ) ,
tab Panel (" Table ", table Output (" table "))
) ) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 21 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(4) La estructura de la interfaz
Se pueden incluir diferentes pesta as con diferentes barras laterales usando las
funciones conditionalPanel, tabsetPanel y tabPanel.
s i d e b arL a y o u t (
s i d e ba rP a n e l (
c o nditional Panel ( c o ndition =" input . c o nditioned P a n e l s = = '
hist ' " ,
...
),
c o nditional Panel ( c o ndition =" input . c o nditioned Panels = = '
datos ' " ,
...
) ) ,
m a i nP a n e l (
t a b s e tP a n e l (
t a bP a nel( " hist " ,
...
),
t a bP a n e l ( " d a to s " ,
...
),
id = " c o n d it ion edP a nel s "
) ) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 22 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 23 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
El aspecto de la interfaz
El paquete shinythemes dispone de diferentes temas que cambian colores y tipos de
fuentes:
default.
cerulean.
cosmo.
flatly.
journal.
readable.
spacelab.
united.
Ver los temas
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 24 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
El aspecto de la interfaz
Para cambiar el tema de la interfaz, se debe instalar el paquete
i n stall . p a c k a g e s ( " s h i n yth eme s " )
y escribir en el archivo ui.R:
l i brary ( s h in y )
l i brary ( s h i n yt heme s )
# UI
shiny UI ( fluid Page ( theme = s h inytheme (" cerulean "),
...
))
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 25 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 26 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Incluyendo contenido de tipo HTML
shiny function creates
p(...) A paragraph of text
h1(...) A rst level header
h2(...) A second level header
h3(...) A third level header
h4(...) A fourth level header
h5(...) A fth level header
h6(...) A sixth level header
a(...) A hyper link
br(...) A line break (e.g. a blank line)
div(...) A division of text with a uniform style
span(...) An in-line division of text with a uniform style
pre(...) Text `as is' in a xed width font
code(...) A formatted block of code
img(...) An image
strong(...) <Bold text
em(...) Italicized text
HTML(...) Directly passes a character string as HTML code
Siempre separado por comas!
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 27 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Incluyendo contenido de tipo HTML
# P a ne l l a tera l
s i d e ba rP a n e l ( h5 ( " En e s t a a p l i c a c i n p o d r s p r a cti ca r g r a n
p a rt e de l o s c o n t enid o s v i stos en c las e . " ) ,
h4 ( " L a s v a r i ab le s c u a n tit ativ a s d i s c reta s s o n v a r i a ble s c u y o
conjunto d e posibles valores e s finito o infinito n u merable
. Para o r ganizar estos datos s e utilizan las ", span (" tablas
de f r e c uen ci a . " , s tyl e = " c o lo r : r e d " ) ) ,
br () ,
p( a c t i o n B u t t o n (" renovar ", " Nuevos datos " ) , align =" right " ) ,
br () ,
p( img ( src =" ua. png ", height = 45 , width = 200) , align =" center " ) ,
p ( " A p licaci n r e a l izad a por " , a ( "J u li o M u ler o" , href = " m a ilto:
j u li o . m u l e ro @u a . es " ) , " . " )
)
# P a ne l p r i n cipa l
m a i nP a n e l (
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 28 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Outline
1 Qu es shiny
2 El dise o de la aplicaci n
La estructura de la interfaz
El aspecto de la interfaz
3 El contenido de la aplicaci n
4 La interactividad de shiny
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 29 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
La interactividad
Como hemos indicado anteriormente, la principal caracter stica de las aplicaciones
creadas con shiny es su interactividad (permiten manipular los datos sin manejar el
c digo). Esto tiene que ver con la programaci n reactiva en la que cada modi caci n
por parte del usuario renueva todo el proceso.
En shiny, hay tres tipos de objetos relacionados con la programaci n reactiva:
1 reactive sources (fuentes reactivas): los inputs que se introducen en ui.R y se
env an a server.R.
2 reactive conductors (conductores reactivos): una transformaci n de los inputs que
se usa en server.R.
3 reactive endpoints (puntos nales reactivos): los outputs obtenidos en server.R y
que se env an a ui.R.
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 30 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Esquema simple
El esquema m s simple toma como entrada una fuente reactiva y, a partir de ella, da
como resultado un punto nal reactivo:
Supongamos que queremos mostrar histogramas de conjuntos de datos generados por
una distribuci n normal. Pedimos al usuario que indique un tama o muestral
input$obs y se obtendr el histograma output$distPlot:
Hello Shiny!
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 31 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(5) Esquema simple: u i . R
l i brary ( s h in y )
s h in yU I ( f l u i dP a g e (
t i t l eP a n e l ( " H e ll o S h in y ! " ) ,
s i d e ba rL a y o u t (
s i d e ba rP a n e l (
s l i d erI n p u t ( " o b s " ,
" N u mbe r of o b s e rvat ion s : " ,
m i n = 1 ,
max = 1000 ,
value = 500)
),
m a i nP a n e l (
p l o tO u t pu t ( " d i s tP l o t " )
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 32 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(5) Esquema simple: s e r v e r . R
l i brary ( s h in y )
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({
d i s t < - r n or m ( i n pu t $ o b s )
h i s t ( d i s t )
})
})
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 33 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Esquema simple II
Los inputs pueden usarse tantas veces como queramos y pueden generar tantos
outputs como queramos.
Supongamos que deseamos construir/analizar el histograma de cierto conjunto de
datos jado faithful$eruptions. Pedimos al usuario que indique:
un n mero de intervalos: un par metro num rico input$nBreaks.
si desea ver las observaciones individuales mediante una marca en el histograma y la
tabla de datos: un par metro l gico input$individualObs.
Se mostrar entonces output$plotOut (y dependiendo de haber marcado la opci n,
m s cosas).
El esquema ser a:
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 34 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(6) Esquema simple II: u i . R
l i brary ( " s h in y " )
s h in yU I ( f l u i dP a g e (
t i t l eP a n e l ( " E s quem a s i mpl e II " ) ,
s i d e ba rL a y o u t (
s i d e b arP a n e l (
s e l e c tI n p u t ( i n pu tI d = " n B r eak s " ,
l a be l = " N u mbe r of bins in h i s to gra m (
a p p r oxi mat e ) : " ,
c h oices = c (10 , 20 , 35 , 5 0 ) ,
s e l e c t e d = 2 0 ) ,
checkbox Input ( input Id = " i n dividual Obs ",
l a b el = s t ron g( " S h ow i n d i v idu a l o b s e r v a t i o ns
" ) ,
v a l ue = F A LSE )
),
m a i nP a n e l (
plot Output ( output Id = " plot Out ", height = " 300 px"),
text O u t p u t ( output Id = " text Out ")
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 35 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(6) Esquema simple II: s e r v e r . R
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
o u tpu t $ p l o tO u t < - r e n de rP l o t ({
hist ( faithful $ eruptions , breaks = as. numeric ( input $ n Breaks ))
if ( i n pu t $ i n d i v idua lO b s ) r u g ( f a i t h f u l $ e r u p tion s )
})
o u tpu t $ t e x tO u t < - r e n de rT e x t ({
if ( i n pu t $ i n d i v idua lO b s ) f a i t h f u l $ e r u p ti on s
else NULL
})
})
Algo parecido, aunque no igual, puede consultarse en:
Ver enlace
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 36 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los inputs
Como se ha observado en los ejemplos anteriores, los inputs pueden ser n meros y
par metros l gicos. M s generalmente, shiny dispone de los siguientes inputs que se
incorporan mediante lo que se denominan widgets (sus nombres acaban generalmente
con Input):
Tipo de input Uso
actionButton Action Button
checkboxGroupInput A group of check boxes
checkboxInput A single check box
dateInput A calendar to aid date selection
dateRangeInput A pair of calendars for selecting a date range
fileInput A le upload control wizard
helpText Help text that can be added to an input form
numericInput A eld to enter numbers
radioButtons A set of radio buttons
selectInput A box with choices to select from
sliderInput A slider bar
submitButton A submit button
textInput A eld to enter text
Shiny: Widget gallery Ver enlace
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 37 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(7) Los inputs: u i . R
l i brary ( s h in y )
# UI
s h in yU I ( f l u i dP a g e (
# T tulo de la aplicaci n
t i t l eP a n el ( " L o s h i s to gram a s " ) ,
# Columna lateral con una barra d e slizable para el n mero de
# i n tervalos
s i d e ba rL a y o u t (
s i d e ba rP a n e l (
s l i d e rI n p u t ( " b i n s " ,
" N m e r o de i n t e rva lo s : " ,
min = 1 ,
max = 50 ,
value = 30)
),
# Panel p r incipal con el g r fico generado
main Panel (
p l o tO u t pu t ( " d i s tP l ot " )
)
)
J u
)
lio
)M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 38 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(7) Los inputs: s e r v e r . R
l i brary ( s h in y )
# SERVER
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
# La e x p resi n que obtiene el h i stograma es
# un r e n d e rP l o t q u e q uiere d eci r q u e :
#
# 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e
# c u a ndo el input c a m bie .
# 2) El o u tpu t es un gr f i c o .
o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({
x <- faithful [, 2] # Old Faithful Geyser data
bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1)
# Dibujar el h i stograma con dicho n mero de i n tervalos
hist (x, breaks = bins , col = ' darkgray ', border = ' white ',
m a i n = ' H i s t og ram a ' )
})
})
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 39 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los inputs
Una vez que se ha incluido un widget en ui.R (en cuya sintaxis hay que indicar el
nombre que se le da a la variable que representa), se utilizar como
input$nombre
dentro de server.R.
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 40 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
De input a output: s e r v e r . R
Los inputs anteriores que se introducen en ui.R se env an a server.R y se utilizan para
obtener los outputs. Las operaciones que se realizan en server.R con los inputs y que
dan como resultado los outputs, son de tipo reactivo (sus nombres empiezan por
render y acaban dependiendo del tipo de objeto que devuelven):
Tipo de objeto que se obtiene Uso
renderImage images (saved as a link to a source le)
renderPlot plots
renderPrint any printed output
renderTable data frame, matrix, other table like structures
renderText character strings
renderUI a Shiny tag object or HTML
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 41 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
De input a output: s e r v e r . R
En las funciones render, aparecer n como argumentos los input$nombre que
hayamos introducido en ui.R.
Las funciones render se asignan a objetos del tipo
output$nombre
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 42 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
De input a output: s e r v e r . R
l i brary ( s h in y )
# SERVER
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
# La e x p resi n que obtiene el h i stograma es
# un r e n d e rP l o t q u e q uiere d eci r q u e :
#
# 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e
# c u a ndo el input c a m bie .
# 2) El o u tpu t es un gr f i c o .
o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({
x <- faithful [, 2] # Old Faithful Geyser data
bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1)
# Dibujar el h i stograma con dicho n mero de i n tervalos
hist (x, breaks = bins , col = ' darkgray ', border = ' white ')
})
})
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 43 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los outputs: u i . R
Los resultados que se han obtenido con el proceso anterior se devuelven a ui.R que
deber mostrarlos (o no). Seg n el tipo de output, debe indicarse en ui.R utilizando
las siguientes opciones:
Tipo de output Signi cado
htmlOutput raw HTML
imageOutput image
plotOutput plot
tableOutput table
textOutput text
uiOutput raw HTML
verbatimTextOutput text
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 44 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los outputs: u i . R
Las funciones Output necesitan como argumento el "nombre" del output$nombre.
plotOutput("nombre")
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 45 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los outputs: u i . R
l i brary ( s h in y )
# UI
s h in yU I ( f l u i dP a g e (
# T tulo de la aplicaci n
t i t l eP a n el ( " L o s h i s to gram a s " ) ,
# Columna lateral con una barra d e slizable para el n mero de
# i n tervalos
s i d e ba rL a y o u t (
s i d e ba rP a n e l (
s l i d e rI n p u t ( " b i n s " ,
" N u mbe r of b i n s : " ,
m i n = 1 ,
max = 50 ,
value = 30)
),
# Panel p r incipal con el g r fico generado
main Panel (
p l o tO u t pu t ( " d i s tP l ot " )
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 46 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los outputs
En ui.R
En server.R ~
renderImage ~ imageOutput
~ Tipo de objeto
~ Imagen
renderPlot ~ plotOutput ~ Gr co
renderTable ~ tableOutput ~ Tabla
renderText ~ textOutput ~ Texto
HTML
renderText ~
renderText ~
htmlOutput ~
verbatimTextOutput ~ Texto
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 47 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Los conductores reactivos: s e r v e r . R
Hasta ahora, los inputs (fuentes reactivas) permiten obtener los outputs (puntos
nales reactivos) de manera directa. Sin embargo, a veces es necesario transformar
los inputs para hacerlos m s tratables en el server.R de forma que limpiamos el
c digo. Esta modi caci n pasa por convertirlos en conductores reactivos de manera
que puedan ser dependientes y, a la vez, tener objetos dependientes.
Supongamos que queremos obtener un t rmino de la sucesi n de Fibonacci y su
inverso. Pedimos al usuario que indique una posici n input$n y obtendremos
output$nthValue y output$nthValueInv. El esquema ser a:
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 48 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(8) Conductores reactivos: u i . R
l i brary ( s h in y )
s h in yU I ( f l u i dP a g e (
t i t l eP a n e l ( " La s u ces i n de F i b ona cc i " ) ,
sidebar Layout (
s i d e b arP a n e l (
n u m e ri cI n p u t ( " n " , " n : " , 10 ,
m i n = 1 , m a x = 1 0 0 )
),
m a i nP a n e l (
h3 ( " El n - s i m o t r min o es : " ) ,
t e x tO u t pu t ( " n t hV a l u e " ) ,
h3 ( " El n - s i m o t r min o es : " ) ,
t e x tO u t pu t ( " n t hV a l u eI n v " )
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 49 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(8) Conductores reactivos: s e r v e r . R
fib <- function ( n) ifelse (n <3 , 1 , fib (n -1) + fib (n -2) )
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
output $ nth Value <- r e n d e r Text ({ fib ( as. numeric ( input $ n ) ) })
output $ nth Value Inv <- render Text ({ 1 / fib ( as. numeric ( input $n)
) })
})
Observemos que antes de shinyServer podemos cargar todas las funciones
necesarias. En este caso, est de nida la funci n fib que devuelve el n- simo t rmino
de la sucesi n de Fibonacci. Esta funci n se utiliza dos veces dentro de shinyServer.
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 50 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(8) Conductores reactivos II: s e r v e r . R
Si queremos mejorar la e ciencia de nuestra aplicacion, podemos calcular en primer
lugar el t rmino correspondiente de la sucesi n y utilizarlo despu s en la generaci n
de los outputs. El archivo server.R mejorado ser a:
fib <- function ( n) ifelse (n <3 , 1 , fib (n -1) + fib (n -2) )
s h i n yS e r ve r ( f u n ctio n( input , o u tpu t) {
c u r r e nt Fib <- reactive ({ fib ( as. numeric ( input $ n ) ) })
o u t p ut $ n t hV a l u e < - r e nd e rT e x t ({ c u rr en tF i b () })
o u t put $ nth Value Inv <- r e n d e r Text ({ 1 / c u r r e n t Fib () })
})
Observemos que:
currentFib depende del valor input$n
output$nthValue y output$nthValueInv dependen de currentFib.
y, a su vez, d
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 51 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(9) Conductores reactivos II: u i . R
Otra situaci n interesante que pueden resolver los conductores reactivos es:
supongamos, por ejemplo, que queremos que el usuario proporcione un conjunto de
datos de forma escrita. Desgraciadamente, no existe un widget que permita
introducir un vector de datos tal y como los trata R: c(...).
l i brary ( s h in y)
s h in yU I ( f l u i dP a g e (
t i t l eP a n e l ( " I n t r odu cien d o d a to s " ) ,
s i d e b arL a y o u t (
s i d e ba rP a n e l (
text Input (' vect ', ' I n troduce los datos ( s e parados p o r
comas ) ' , " 0 ,1 ,2 ")
),
m a i nP a n el (
h4 ( ' T u s d a to s s on : ' ) ,
v e r b a t i mT e x tO u t p u t ( " d a t a " ) ,
h4 ( ' La m edi a es : ' ) ,
v e r b a t i mT e x tO u t p u t ( " m e a n " )
) ) ) )
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 52 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
(9) Conductores reactivos II: s e r v e r . R
l i brary ( s h in y )
n u m e xtr acta l l < - f u n c t io n ( s t rin g ) {
unlist ( r e gmatches ( string , gregexpr (" [[: digit :]] +. * [[: digit :]]
* " , s t rin g ) ) , u s e . n a m es = F A LS E )
}
s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) {
v e cto r < - r e a c t i v e ({
as. n u m eric ( n u mextractall ( input $ vect ))
})
o u tpu t $ d a t a < - r e n de rP r i nt ({
v e cto r ()
})
o u tpu t $ m e a n < - r e n de rP r i nt ({
mean ( v e ctor () )
})
})
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 53 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Recomendaciones
Mucho cuidado con las llaves, las comas y los par ntesis!
Mucho cuidado con los nombres de los inputs y outputs!
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 54 / 54
Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny
Aplicaciones interactivas dise adas con shiny
Julio Mulero
julio.mulero@ua.es
Departamento de Matem ticas
Universidad de Alicante
J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 55 / 54

Weitere ähnliche Inhalte

Ähnlich wie curso shiny.pptx

Internet senior09
Internet senior09Internet senior09
Internet senior09chente1974
 
Herramientas digitales para el aprendizaje
Herramientas digitales para el aprendizajeHerramientas digitales para el aprendizaje
Herramientas digitales para el aprendizajeJohnny Lopez Sanchez
 
Aplicaciones ofimáticas
Aplicaciones ofimáticasAplicaciones ofimáticas
Aplicaciones ofimáticasdeibyicmi
 
Informática
InformáticaInformática
Informáticayicmi
 
C# for Beginners
C# for BeginnersC# for Beginners
C# for BeginnersZaory Zaory
 
Análisis comparativo de Herramientas de Autor para la creación de actividades...
Análisis comparativo de Herramientas de Autor para la creación de actividades...Análisis comparativo de Herramientas de Autor para la creación de actividades...
Análisis comparativo de Herramientas de Autor para la creación de actividades...Lucrecia Moralejo
 
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rio
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rioGlosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rio
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rioJose Angel
 
Planificacion de la monografia desarrollo del softwre1
Planificacion de la monografia desarrollo del softwre1Planificacion de la monografia desarrollo del softwre1
Planificacion de la monografia desarrollo del softwre1Gotlieb Estiven Vasquez Flores
 
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...JAVIER SOLIS NOYOLA
 

Ähnlich wie curso shiny.pptx (20)

Internet senior09
Internet senior09Internet senior09
Internet senior09
 
Herramientas digitales para el aprendizaje
Herramientas digitales para el aprendizajeHerramientas digitales para el aprendizaje
Herramientas digitales para el aprendizaje
 
Aplicaciones ofimáticas
Aplicaciones ofimáticasAplicaciones ofimáticas
Aplicaciones ofimáticas
 
Informática
InformáticaInformática
Informática
 
C# for Beginners
C# for BeginnersC# for Beginners
C# for Beginners
 
Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1
 
Análisis comparativo de Herramientas de Autor para la creación de actividades...
Análisis comparativo de Herramientas de Autor para la creación de actividades...Análisis comparativo de Herramientas de Autor para la creación de actividades...
Análisis comparativo de Herramientas de Autor para la creación de actividades...
 
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rio
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rioGlosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rio
Glosario. Arquitectura fisica y logica de las TICs en educacion. Glos@rio
 
Libro pruebas de usuario completo
Libro pruebas de usuario completoLibro pruebas de usuario completo
Libro pruebas de usuario completo
 
Rmodmex pc27
Rmodmex pc27Rmodmex pc27
Rmodmex pc27
 
Rmodmex pc27
Rmodmex pc27Rmodmex pc27
Rmodmex pc27
 
¿Qué es Scratch
¿Qué es Scratch¿Qué es Scratch
¿Qué es Scratch
 
Java s0
Java s0Java s0
Java s0
 
Planificacion de la monografia desarrollo del softwre1
Planificacion de la monografia desarrollo del softwre1Planificacion de la monografia desarrollo del softwre1
Planificacion de la monografia desarrollo del softwre1
 
Programación ii
Programación iiProgramación ii
Programación ii
 
2. GUIA DE RECURSOS CC.NN ERICK BERMEO 10MO J
2. GUIA DE RECURSOS CC.NN ERICK BERMEO 10MO J2. GUIA DE RECURSOS CC.NN ERICK BERMEO 10MO J
2. GUIA DE RECURSOS CC.NN ERICK BERMEO 10MO J
 
Iniciación a Android
Iniciación a AndroidIniciación a Android
Iniciación a Android
 
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
 
Entrega5
Entrega5Entrega5
Entrega5
 
Entrega4-Julián_Delgado-Icesi
Entrega4-Julián_Delgado-IcesiEntrega4-Julián_Delgado-Icesi
Entrega4-Julián_Delgado-Icesi
 

Kürzlich hochgeladen

Análisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.pptAnálisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.pptProduvisaCursos
 
metodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un pacientemetodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un pacienteMedicinaInternaresid1
 
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxCUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxfatimacamilainjantem
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfalexanderleonyonange
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfJC Díaz Herrera
 
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIALINFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIALMANUELVILELA7
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxlm8322074
 
La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfjosellaqtas
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointaria66611782972
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfJC Díaz Herrera
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoBESTTech1
 
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdfPorcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdfJC Díaz Herrera
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxJafetColli
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .GIANELAKAINACHALLCOJ2
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdfJC Díaz Herrera
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfJC Díaz Herrera
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismofariannys5
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.pptssuserbdc329
 
Adultos Mayores más de 60 años como de la población total (2024).pdf
Adultos Mayores más de 60 años como  de la población total (2024).pdfAdultos Mayores más de 60 años como  de la población total (2024).pdf
Adultos Mayores más de 60 años como de la población total (2024).pdfJC Díaz Herrera
 

Kürzlich hochgeladen (20)

Análisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.pptAnálisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.ppt
 
metodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un pacientemetodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un paciente
 
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxCUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIALINFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
INFORME FINAL ESTADISTICA DESCRIPTIVA E INFERENCIAL
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
 
La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdf
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
 
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdfPorcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
 
Adultos Mayores más de 60 años como de la población total (2024).pdf
Adultos Mayores más de 60 años como  de la población total (2024).pdfAdultos Mayores más de 60 años como  de la población total (2024).pdf
Adultos Mayores más de 60 años como de la población total (2024).pdf
 

curso shiny.pptx

  • 1. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Aplicaciones interactivas dise adas con shiny Julio Mulero julio.mulero@ua.es Departamento de Matem ticas Universidad de Alicante J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 1 / 54
  • 2. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 2 / 54
  • 3. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 3 / 54
  • 4. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Qu es shiny Shiny Shiny es un paquete de R que permite construir aplicaciones web interactivas a partir de los scripts de R. Instalaci n Si a n no tienes instalado Shiny: i n stall . p a c k a g e s ( " s h in y " ) l i brary ( " s h in y " ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 4 / 54
  • 5. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Qu es shiny Ejemplos de aplicaciones s y ste m . f i l e ( " e x a m p l e s " , p ackage = " s h in y " ) r u nE x a m pl e ( " 01 _ h e ll o " ) # un h i s togr am a r u nE x a m pl e ( " 02 _ t e x t " ) # t a bla s y d a t a fra me s r u nE x a m pl e ( " 03 _ r e a c tiv it y " ) # u n a e xpres i n r e a c t i va r u nE x a m pl e ( " 04 _ m p g " ) # v a r i abl e s g l o b a l e s r u nE x a m pl e ( " 05 _ s l iders " ) # b a rras d e s liza ble s run Example (" 06 _ tabsets ") # varias pesta as run Example (" 07 _ widgets ") # textos de ayuda y botones run Example (" 08 _ html ") # Shiny desde HTML r u nE x a m pl e ( " 09 _ u p loa d " ) # c a rga de a r c h i v o s r u nE x a m pl e ( " 10 _ d o w n l o a d " ) # d e s c a r g a de a r c h i v o s r u nE x a m pl e ( " 11 _ t i me r " ) # d a y h o r a Ver galer a Rstudio Ver galer a Showmeshiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 5 / 54
  • 6. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Qu es shiny Inter s de shiny en la docencia La interactividad de estas aplicaciones permite manipular los datos sin tener que manipular el c digo. De hecho, en la naturaleza de shiny subyace un concepto a n m s fuerte: la reactividad (habr a que comentar estas dos caracter sticas). Las aplicaciones web creadas con shiny pueden estar enfocadas a numerosos mbitos: investigaci n, profesional o, por supuesto, la docencia. Estas aplicaciones pueden abrirse desde el propio ordenador, una tablet o incluso el m vil. En particular, shiny permite dise ar recursos docentes que ayuden al profesor mostrar los contenidos de las asignaturas en clase. Ver correlaci n Estos recursos pueden facilitar a los alumnos la pr ctica y la ejercitaci n de los problemas desde su propia casa con ejercicios de car cter diverso. Ser n m s o menos complejos dependiendo de las intervenciones del sujeto y del modo en que realice los ejercicios, haci ndole saber a este cual es su nivel de desarrollo o aprendizaje. Ver problemas J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 6 / 54
  • 7. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Creando un proyecto shiny File Create project from: New project d New directory Project Type: d Shiny Web Application El resultado es un directorio nuevo con el nombre que hayamos elegido en el que aparecen dos archivos (ui.R y server.R). J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 7 / 54
  • 8. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Creando un proyecto shiny Una app de shiny consta (al menos) de dos archivos: un script para la interfaz del usuario, (user-interface, ui.R), que recibe los inputs y muestra los outputs, y un script para los c lculos (server.R), que realiza los c lculos necesarios. Inputs z $ ui.R server.R , Outputs J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 8 / 54
  • 9. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Un primer ejemplo J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 9 / 54
  • 10. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny El archivo u i . R l i brary ( s h in y ) # UI s h in yU I ( f l u i dP a g e ( # T tulo de la aplicaci n t i t l eP a n el ( " L o s h i s to gram a s " ) , # Columna lateral con una barra d e slizable para el n mero de # i n tervalos s i d e ba rL a y o u t ( s i d e ba rP a n e l ( s l i d e rI n p u t ( " b i n s " , " N m e r o de i n t e rva lo s : " , min = 1 , max = 50 , value = 30) ), # Panel p r incipal con el g r fico generado main Panel ( p l o tO u t pu t ( " d i s tP l ot " ) ) ) J u ) lio )M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 10 / 54
  • 11. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny El archivo s e r v e r . R l i brary ( s h in y ) # SERVER s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { # La e x p resi n que obtiene el h i stograma es # un r e n d e rP l o t q u e q uiere d eci r q u e : # # 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e # c u a ndo el input c a m bie . # 2) El o u tpu t es un gr f i c o . o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({ x <- faithful [, 2] # Old Faithful Geyser data bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1) # Dibujar el h i stograma con dicho n mero de i n tervalos hist (x, breaks = bins , col = ' darkgray ', border = ' white ', m a i n = ' H i s t og ram a ' ) }) }) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 11 / 54
  • 12. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Lanzando la aplicaci n J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 12 / 54
  • 13. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Lanzando la aplicaci n El c digo de la aplicaci n shiny puede estar tambi n dentro de un solo script y puede ejecutarse de la siguiente manera: l i brary ( s h in y ) # UI u < - s h in yU I ( T i p oD eP a g i n a ( )) # SERVER s < - s h i n yS e r ve r ( f u n c t io n ( i n p ut , o utpu t ) { }) s h i n yA p p ( ui = u , s e rve r = s ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 13 / 54
  • 14. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Compartiendo la aplicaci n shinyapps: 440$ al a o una suscripci n b sica / 1100$ al a o una suscripci n est ndar. Shiny server!: gratuito . J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 14 / 54
  • 15. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 15 / 54
  • 16. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny El dise o de la interfaz Todos los aspectos del dise o se indican en el archivo ui.R. El dise o de la interfaz de usuario est relacionado con: 1 La e s t ru c t u ra (barras laterales, paneles, pesta as, etc.). 2 El a s p e c t o (colores, tipos de fuentes, etc.). J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 16 / 54
  • 17. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 17 / 54
  • 18. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny La estructura de la interfaz La estructura de la interfaz de usuario puede ser de tres tipos: pageWithSideBar (deprecated=obsoleto, fluidPage es m s exible). fluidPage. fixedPage (igual que el anterior, pero fuerza la anchura de la p gina web). En cualquier caso: titlePanel: t tulo de la aplicaci n. sidebarLayout: sidebarPanel: barra lateral de contenido. mainPanel: panel principal de contenido. J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 18 / 54
  • 19. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (1) La estructura de la interfaz La estructura b sica es: l i brary ( s h in y ) # UI s h in yU I ( f l u i dP a g e( # T t u l o de la a p l i c a c i n t i t l eP a n e l ( " T t u l o " ) , # C o n t enid o de la a p l i c a c i n s i d e b arL a y o u t ( # P a ne l l a tera l sidebar Panel (" T tulo d e l panel lateral ", C o ntenido ), # P a ne l p r i n cipa l m a i nP a n e l ( C o ntenido ) ) )) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 19 / 54
  • 20. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (2) La estructura de la interfaz Se pueden incluir las de contenido con fluidRow, column. La funci n wellPanel crea un panel lateral. s h in yU I ( f l u i dP a g e ( t i t l eP a n e l ( " H e ll o S h in y ! " ) , f l u i dR o w ( c o lum n (3 , w e l lP a n e l ( s l i d e rI n p u t ( " o b s 1 " , " N u m b er of o b s er vati on s : " , m i n = 1 , m a x = 1 00 0 , v a lu e = 5 0 0 ) ) ) , c o lum n (8 , p l o tO u t pu t ( " d i s tP l o t1 " ) ) ) , f l u i dR o w ( c o lum n (2 , w e l lP a n e l ( s l i d e rI n p u t ( " o b s 2 " , " N u m b er of o b s er vati on s : " , m i n = 1 , m a x = 1 00 0 , v a lu e = 5 0 0 ) ) ) , J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 20 / 54
  • 21. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (3) La estructura de la interfaz Se pueden incluir diferentes pesta as con una misma barra lateral usando las funciones tabsetPanel y tabPanel. m a i nP a n el ( t a b s e tP a n e l ( t a bP a n e l ( " P l o t " , p l o tO u t pu t ( " p l ot " ) ) , tab Panel (" Summary ", v e rbatim T e x t O u t p u t (" summary " ) ) , tab Panel (" Table ", table Output (" table ")) ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 21 / 54
  • 22. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (4) La estructura de la interfaz Se pueden incluir diferentes pesta as con diferentes barras laterales usando las funciones conditionalPanel, tabsetPanel y tabPanel. s i d e b arL a y o u t ( s i d e ba rP a n e l ( c o nditional Panel ( c o ndition =" input . c o nditioned P a n e l s = = ' hist ' " , ... ), c o nditional Panel ( c o ndition =" input . c o nditioned Panels = = ' datos ' " , ... ) ) , m a i nP a n e l ( t a b s e tP a n e l ( t a bP a nel( " hist " , ... ), t a bP a n e l ( " d a to s " , ... ), id = " c o n d it ion edP a nel s " ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 22 / 54
  • 23. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 23 / 54
  • 24. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny El aspecto de la interfaz El paquete shinythemes dispone de diferentes temas que cambian colores y tipos de fuentes: default. cerulean. cosmo. flatly. journal. readable. spacelab. united. Ver los temas J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 24 / 54
  • 25. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny El aspecto de la interfaz Para cambiar el tema de la interfaz, se debe instalar el paquete i n stall . p a c k a g e s ( " s h i n yth eme s " ) y escribir en el archivo ui.R: l i brary ( s h in y ) l i brary ( s h i n yt heme s ) # UI shiny UI ( fluid Page ( theme = s h inytheme (" cerulean "), ... )) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 25 / 54
  • 26. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 26 / 54
  • 27. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Incluyendo contenido de tipo HTML shiny function creates p(...) A paragraph of text h1(...) A rst level header h2(...) A second level header h3(...) A third level header h4(...) A fourth level header h5(...) A fth level header h6(...) A sixth level header a(...) A hyper link br(...) A line break (e.g. a blank line) div(...) A division of text with a uniform style span(...) An in-line division of text with a uniform style pre(...) Text `as is' in a xed width font code(...) A formatted block of code img(...) An image strong(...) <Bold text em(...) Italicized text HTML(...) Directly passes a character string as HTML code Siempre separado por comas! J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 27 / 54
  • 28. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Incluyendo contenido de tipo HTML # P a ne l l a tera l s i d e ba rP a n e l ( h5 ( " En e s t a a p l i c a c i n p o d r s p r a cti ca r g r a n p a rt e de l o s c o n t enid o s v i stos en c las e . " ) , h4 ( " L a s v a r i ab le s c u a n tit ativ a s d i s c reta s s o n v a r i a ble s c u y o conjunto d e posibles valores e s finito o infinito n u merable . Para o r ganizar estos datos s e utilizan las ", span (" tablas de f r e c uen ci a . " , s tyl e = " c o lo r : r e d " ) ) , br () , p( a c t i o n B u t t o n (" renovar ", " Nuevos datos " ) , align =" right " ) , br () , p( img ( src =" ua. png ", height = 45 , width = 200) , align =" center " ) , p ( " A p licaci n r e a l izad a por " , a ( "J u li o M u ler o" , href = " m a ilto: j u li o . m u l e ro @u a . es " ) , " . " ) ) # P a ne l p r i n cipa l m a i nP a n e l ( ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 28 / 54
  • 29. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Outline 1 Qu es shiny 2 El dise o de la aplicaci n La estructura de la interfaz El aspecto de la interfaz 3 El contenido de la aplicaci n 4 La interactividad de shiny J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 29 / 54
  • 30. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny La interactividad Como hemos indicado anteriormente, la principal caracter stica de las aplicaciones creadas con shiny es su interactividad (permiten manipular los datos sin manejar el c digo). Esto tiene que ver con la programaci n reactiva en la que cada modi caci n por parte del usuario renueva todo el proceso. En shiny, hay tres tipos de objetos relacionados con la programaci n reactiva: 1 reactive sources (fuentes reactivas): los inputs que se introducen en ui.R y se env an a server.R. 2 reactive conductors (conductores reactivos): una transformaci n de los inputs que se usa en server.R. 3 reactive endpoints (puntos nales reactivos): los outputs obtenidos en server.R y que se env an a ui.R. J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 30 / 54
  • 31. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Esquema simple El esquema m s simple toma como entrada una fuente reactiva y, a partir de ella, da como resultado un punto nal reactivo: Supongamos que queremos mostrar histogramas de conjuntos de datos generados por una distribuci n normal. Pedimos al usuario que indique un tama o muestral input$obs y se obtendr el histograma output$distPlot: Hello Shiny! J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 31 / 54
  • 32. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (5) Esquema simple: u i . R l i brary ( s h in y ) s h in yU I ( f l u i dP a g e ( t i t l eP a n e l ( " H e ll o S h in y ! " ) , s i d e ba rL a y o u t ( s i d e ba rP a n e l ( s l i d erI n p u t ( " o b s " , " N u mbe r of o b s e rvat ion s : " , m i n = 1 , max = 1000 , value = 500) ), m a i nP a n e l ( p l o tO u t pu t ( " d i s tP l o t " ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 32 / 54
  • 33. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (5) Esquema simple: s e r v e r . R l i brary ( s h in y ) s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({ d i s t < - r n or m ( i n pu t $ o b s ) h i s t ( d i s t ) }) }) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 33 / 54
  • 34. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Esquema simple II Los inputs pueden usarse tantas veces como queramos y pueden generar tantos outputs como queramos. Supongamos que deseamos construir/analizar el histograma de cierto conjunto de datos jado faithful$eruptions. Pedimos al usuario que indique: un n mero de intervalos: un par metro num rico input$nBreaks. si desea ver las observaciones individuales mediante una marca en el histograma y la tabla de datos: un par metro l gico input$individualObs. Se mostrar entonces output$plotOut (y dependiendo de haber marcado la opci n, m s cosas). El esquema ser a: J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 34 / 54
  • 35. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (6) Esquema simple II: u i . R l i brary ( " s h in y " ) s h in yU I ( f l u i dP a g e ( t i t l eP a n e l ( " E s quem a s i mpl e II " ) , s i d e ba rL a y o u t ( s i d e b arP a n e l ( s e l e c tI n p u t ( i n pu tI d = " n B r eak s " , l a be l = " N u mbe r of bins in h i s to gra m ( a p p r oxi mat e ) : " , c h oices = c (10 , 20 , 35 , 5 0 ) , s e l e c t e d = 2 0 ) , checkbox Input ( input Id = " i n dividual Obs ", l a b el = s t ron g( " S h ow i n d i v idu a l o b s e r v a t i o ns " ) , v a l ue = F A LSE ) ), m a i nP a n e l ( plot Output ( output Id = " plot Out ", height = " 300 px"), text O u t p u t ( output Id = " text Out ") ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 35 / 54
  • 36. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (6) Esquema simple II: s e r v e r . R s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { o u tpu t $ p l o tO u t < - r e n de rP l o t ({ hist ( faithful $ eruptions , breaks = as. numeric ( input $ n Breaks )) if ( i n pu t $ i n d i v idua lO b s ) r u g ( f a i t h f u l $ e r u p tion s ) }) o u tpu t $ t e x tO u t < - r e n de rT e x t ({ if ( i n pu t $ i n d i v idua lO b s ) f a i t h f u l $ e r u p ti on s else NULL }) }) Algo parecido, aunque no igual, puede consultarse en: Ver enlace J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 36 / 54
  • 37. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los inputs Como se ha observado en los ejemplos anteriores, los inputs pueden ser n meros y par metros l gicos. M s generalmente, shiny dispone de los siguientes inputs que se incorporan mediante lo que se denominan widgets (sus nombres acaban generalmente con Input): Tipo de input Uso actionButton Action Button checkboxGroupInput A group of check boxes checkboxInput A single check box dateInput A calendar to aid date selection dateRangeInput A pair of calendars for selecting a date range fileInput A le upload control wizard helpText Help text that can be added to an input form numericInput A eld to enter numbers radioButtons A set of radio buttons selectInput A box with choices to select from sliderInput A slider bar submitButton A submit button textInput A eld to enter text Shiny: Widget gallery Ver enlace J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 37 / 54
  • 38. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (7) Los inputs: u i . R l i brary ( s h in y ) # UI s h in yU I ( f l u i dP a g e ( # T tulo de la aplicaci n t i t l eP a n el ( " L o s h i s to gram a s " ) , # Columna lateral con una barra d e slizable para el n mero de # i n tervalos s i d e ba rL a y o u t ( s i d e ba rP a n e l ( s l i d e rI n p u t ( " b i n s " , " N m e r o de i n t e rva lo s : " , min = 1 , max = 50 , value = 30) ), # Panel p r incipal con el g r fico generado main Panel ( p l o tO u t pu t ( " d i s tP l ot " ) ) ) J u ) lio )M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 38 / 54
  • 39. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (7) Los inputs: s e r v e r . R l i brary ( s h in y ) # SERVER s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { # La e x p resi n que obtiene el h i stograma es # un r e n d e rP l o t q u e q uiere d eci r q u e : # # 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e # c u a ndo el input c a m bie . # 2) El o u tpu t es un gr f i c o . o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({ x <- faithful [, 2] # Old Faithful Geyser data bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1) # Dibujar el h i stograma con dicho n mero de i n tervalos hist (x, breaks = bins , col = ' darkgray ', border = ' white ', m a i n = ' H i s t og ram a ' ) }) }) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 39 / 54
  • 40. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los inputs Una vez que se ha incluido un widget en ui.R (en cuya sintaxis hay que indicar el nombre que se le da a la variable que representa), se utilizar como input$nombre dentro de server.R. J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 40 / 54
  • 41. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny De input a output: s e r v e r . R Los inputs anteriores que se introducen en ui.R se env an a server.R y se utilizan para obtener los outputs. Las operaciones que se realizan en server.R con los inputs y que dan como resultado los outputs, son de tipo reactivo (sus nombres empiezan por render y acaban dependiendo del tipo de objeto que devuelven): Tipo de objeto que se obtiene Uso renderImage images (saved as a link to a source le) renderPlot plots renderPrint any printed output renderTable data frame, matrix, other table like structures renderText character strings renderUI a Shiny tag object or HTML J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 41 / 54
  • 42. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny De input a output: s e r v e r . R En las funciones render, aparecer n como argumentos los input$nombre que hayamos introducido en ui.R. Las funciones render se asignan a objetos del tipo output$nombre J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 42 / 54
  • 43. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny De input a output: s e r v e r . R l i brary ( s h in y ) # SERVER s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { # La e x p resi n que obtiene el h i stograma es # un r e n d e rP l o t q u e q uiere d eci r q u e : # # 1) Es " r e a c t i v a " y d e b e re - e j e c uta rs e a u to m t i c a ment e # c u a ndo el input c a m bie . # 2) El o u tpu t es un gr f i c o . o u tpu t $ d i s tP l o t < - r e nd e rP l o t ({ x <- faithful [, 2] # Old Faithful Geyser data bins <- seq( min ( x ) , max ( x ) , length . out = input $ bins + 1) # Dibujar el h i stograma con dicho n mero de i n tervalos hist (x, breaks = bins , col = ' darkgray ', border = ' white ') }) }) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 43 / 54
  • 44. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los outputs: u i . R Los resultados que se han obtenido con el proceso anterior se devuelven a ui.R que deber mostrarlos (o no). Seg n el tipo de output, debe indicarse en ui.R utilizando las siguientes opciones: Tipo de output Signi cado htmlOutput raw HTML imageOutput image plotOutput plot tableOutput table textOutput text uiOutput raw HTML verbatimTextOutput text J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 44 / 54
  • 45. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los outputs: u i . R Las funciones Output necesitan como argumento el "nombre" del output$nombre. plotOutput("nombre") J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 45 / 54
  • 46. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los outputs: u i . R l i brary ( s h in y ) # UI s h in yU I ( f l u i dP a g e ( # T tulo de la aplicaci n t i t l eP a n el ( " L o s h i s to gram a s " ) , # Columna lateral con una barra d e slizable para el n mero de # i n tervalos s i d e ba rL a y o u t ( s i d e ba rP a n e l ( s l i d e rI n p u t ( " b i n s " , " N u mbe r of b i n s : " , m i n = 1 , max = 50 , value = 30) ), # Panel p r incipal con el g r fico generado main Panel ( p l o tO u t pu t ( " d i s tP l ot " ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 46 / 54
  • 47. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los outputs En ui.R En server.R ~ renderImage ~ imageOutput ~ Tipo de objeto ~ Imagen renderPlot ~ plotOutput ~ Gr co renderTable ~ tableOutput ~ Tabla renderText ~ textOutput ~ Texto HTML renderText ~ renderText ~ htmlOutput ~ verbatimTextOutput ~ Texto J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 47 / 54
  • 48. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Los conductores reactivos: s e r v e r . R Hasta ahora, los inputs (fuentes reactivas) permiten obtener los outputs (puntos nales reactivos) de manera directa. Sin embargo, a veces es necesario transformar los inputs para hacerlos m s tratables en el server.R de forma que limpiamos el c digo. Esta modi caci n pasa por convertirlos en conductores reactivos de manera que puedan ser dependientes y, a la vez, tener objetos dependientes. Supongamos que queremos obtener un t rmino de la sucesi n de Fibonacci y su inverso. Pedimos al usuario que indique una posici n input$n y obtendremos output$nthValue y output$nthValueInv. El esquema ser a: J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 48 / 54
  • 49. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (8) Conductores reactivos: u i . R l i brary ( s h in y ) s h in yU I ( f l u i dP a g e ( t i t l eP a n e l ( " La s u ces i n de F i b ona cc i " ) , sidebar Layout ( s i d e b arP a n e l ( n u m e ri cI n p u t ( " n " , " n : " , 10 , m i n = 1 , m a x = 1 0 0 ) ), m a i nP a n e l ( h3 ( " El n - s i m o t r min o es : " ) , t e x tO u t pu t ( " n t hV a l u e " ) , h3 ( " El n - s i m o t r min o es : " ) , t e x tO u t pu t ( " n t hV a l u eI n v " ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 49 / 54
  • 50. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (8) Conductores reactivos: s e r v e r . R fib <- function ( n) ifelse (n <3 , 1 , fib (n -1) + fib (n -2) ) s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { output $ nth Value <- r e n d e r Text ({ fib ( as. numeric ( input $ n ) ) }) output $ nth Value Inv <- render Text ({ 1 / fib ( as. numeric ( input $n) ) }) }) Observemos que antes de shinyServer podemos cargar todas las funciones necesarias. En este caso, est de nida la funci n fib que devuelve el n- simo t rmino de la sucesi n de Fibonacci. Esta funci n se utiliza dos veces dentro de shinyServer. J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 50 / 54
  • 51. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (8) Conductores reactivos II: s e r v e r . R Si queremos mejorar la e ciencia de nuestra aplicacion, podemos calcular en primer lugar el t rmino correspondiente de la sucesi n y utilizarlo despu s en la generaci n de los outputs. El archivo server.R mejorado ser a: fib <- function ( n) ifelse (n <3 , 1 , fib (n -1) + fib (n -2) ) s h i n yS e r ve r ( f u n ctio n( input , o u tpu t) { c u r r e nt Fib <- reactive ({ fib ( as. numeric ( input $ n ) ) }) o u t p ut $ n t hV a l u e < - r e nd e rT e x t ({ c u rr en tF i b () }) o u t put $ nth Value Inv <- r e n d e r Text ({ 1 / c u r r e n t Fib () }) }) Observemos que: currentFib depende del valor input$n output$nthValue y output$nthValueInv dependen de currentFib. y, a su vez, d J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 51 / 54
  • 52. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (9) Conductores reactivos II: u i . R Otra situaci n interesante que pueden resolver los conductores reactivos es: supongamos, por ejemplo, que queremos que el usuario proporcione un conjunto de datos de forma escrita. Desgraciadamente, no existe un widget que permita introducir un vector de datos tal y como los trata R: c(...). l i brary ( s h in y) s h in yU I ( f l u i dP a g e ( t i t l eP a n e l ( " I n t r odu cien d o d a to s " ) , s i d e b arL a y o u t ( s i d e ba rP a n e l ( text Input (' vect ', ' I n troduce los datos ( s e parados p o r comas ) ' , " 0 ,1 ,2 ") ), m a i nP a n el ( h4 ( ' T u s d a to s s on : ' ) , v e r b a t i mT e x tO u t p u t ( " d a t a " ) , h4 ( ' La m edi a es : ' ) , v e r b a t i mT e x tO u t p u t ( " m e a n " ) ) ) ) ) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 52 / 54
  • 53. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny (9) Conductores reactivos II: s e r v e r . R l i brary ( s h in y ) n u m e xtr acta l l < - f u n c t io n ( s t rin g ) { unlist ( r e gmatches ( string , gregexpr (" [[: digit :]] +. * [[: digit :]] * " , s t rin g ) ) , u s e . n a m es = F A LS E ) } s h i n yS e r ve r ( f u n c t i o n ( i n p ut , o u tpu t ) { v e cto r < - r e a c t i v e ({ as. n u m eric ( n u mextractall ( input $ vect )) }) o u tpu t $ d a t a < - r e n de rP r i nt ({ v e cto r () }) o u tpu t $ m e a n < - r e n de rP r i nt ({ mean ( v e ctor () ) }) }) J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 53 / 54
  • 54. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Recomendaciones Mucho cuidado con las llaves, las comas y los par ntesis! Mucho cuidado con los nombres de los inputs y outputs! J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 54 / 54
  • 55. Q u es shiny El dise o de la aplicaci n El contenido de la aplicaci n La interactividad de shiny Aplicaciones interactivas dise adas con shiny Julio Mulero julio.mulero@ua.es Departamento de Matem ticas Universidad de Alicante J u l i o M u l e r o (julio.mulero@ua.es) Aplicaciones dise adas con shiny 55 / 54