2.11 Páginas web y aplicaciones Shiny
Al igual que en los HTML widgets, los sitios web se pueden incrustar en el libro. Puede utilizar la función knitr::include_url()
para incluir una página web a través de su URL. Cuando el formato de salida es HTML, se usa un iframe
8; en otros casos, knitr trata de tomar una captura de pantalla de la página web (o utilizar una captura de pantalla personalizada en la medida en que se haya pensado). Todas las opciones del chunk son las mismas que para los HTML widgets. Una opción que puede requerir atención especial es la opción delay
: los HTML widgets se compilan a nivel local, por lo que por lo general son rápidos para cargar por PhantomJS para tomar capturas de pantalla, pero una URL arbitraria pueden tardar más tiempo en cargarse, por lo que es posible que desee utilizar un valor mayor de delay
, por ejemplo, utilizar la opción del chunk screenshot.opts = list(delay = 5)
.
Una función relacionada es knitr::include_app()
, que es muy similar a include_url()
, y fue diseñada para incrustar aplicaciones shiny a través de sus direcciones URL en la salida. Su única diferencia con include_url()
es que añade automáticamente un parámetro de consulta ?showcase=0
a la URL, si no hay otros parámetros de consulta que estén presentes en la URL, desactiva el modo showcase de Shiny, lo que es poco probable que sea útil para las capturas de pantalla o iframes. Si se desea solo el modo showcase, únicamente use include_url()
en lugar de include_app()
. A continuación se muestra un ejemplo de aplicación Shiny (Figura 2.6):
knitr::include_app('https://yihui.shinyapps.io/miniUI/', height = '600px')
Figura: 2.6: Una aplicación en Shiny creada mediante el paquete miniUI; puede ver una versiòn en vivo en: https://yihui.shinyapps.io/miniUI/.
Una vez más, verá una aplicación en vivo si está leyendo una versión HTML de este libro, y una captura de pantalla estática si está leyendo otros tipos de formatos. La aplicación Shiny anterior se ha creado usando el paquete miniUI (Cheng 2016), que proporciona funciones de diseño que son particularmente agradables para aplicaciones Shiny en pantallas pequeñas. Si utiliza funciones de diseño Shiny normales, es probable que vea las barras de desplazamiento verticales y/o horizontales en los marcos flotantes debido a que el tamaño de página es demasiado grande para caber un marco flotante. Cuando el ancho predeterminado del marco flotante es demasiado pequeño, puede utilizar la opción del chunk out.width
para cambiarlo. Para la altura del iframe, utilice el argumento height
característica de include_url()
/ include_app()
.
Las aplicaciones Shiny pueden tardar más tiempo en cargar que las URL habituales. Es posible que desee utilizar un valor conservador para la opción delay
, por ejemplo, 10. Es evidente que tanto include_url()
como include_app()
requieren conexión a Internet, a menos que haya almacenado en caché previamente el chunk (pero páginas Web dentro de iframes aún no funcionan sin una conexión a Internet).
Referencias
Cheng, Joe. 2016. MiniUI: Shiny Ui Widgets for Small Screens. https://CRAN.R-project.org/package=miniUI.
Un
iframe
es básicamente una caja en una página Web para incrustar otra página Web.↩