+ - 0:00:00
Notes for current slide
Notes for next slide

Dashboards II

Reporting mit R
The R Bootcamp

Februar 2021

1 / 16

shiny

  • flexdashboards zeigen Daten in Fenstern.
  • Mit shiny können Dashboards um interaktive Funktionen erweitert werden.
    • Daten filtern
    • Variablen auswählen
3 / 16

shiny


shiny is a framework for creating web applications using R code. It is designed primarily with data scientists in mind, and to that end, you can create pretty complicated Shiny apps with no knowledge of HTML, CSS, or JavaScript.

Hadley Wickham
in Mastering Shiny


4 / 16

shiny App

  • Eine shiny App besteht aus zwei Teilen.
  • Das UI (user interface) gestaltet die angezeigte Webseite.
  • Der Server-Teil verarbeitet den Input durch den Nutzer.

7 / 16

Interfaces

  • Die Interaktion mit der App erfolgt über Widgets, z.B.:
    • Slider
    • Checkboxen
    • Dropdown Menus

  • Widget-Eingaben werden in einem input-R-Object an den Server-Code weitergegeben.
    • input ist eine Liste mit einem Element pro Widget.
    • Neue Eingabe = Update von input.




adapted from deanattali.com

8 / 16

input

  • Die Interaktion mit der App erfolgt über Widgets, z.B.:
    • Slider
    • Checkboxen
    • Dropdown Menus

  • Widget-Eingaben werden in einem input-R-Object an den Server-Code weitergegeben.
    • input ist eine Liste mit einem Element pro Widget.
    • Neue Eingabe = Update von input.





9 / 16

Reaktivität

  • input kann nur in reaktiver Umwelt gelesen werden (z.B., render*).
  • Reaktive Umwelten bzw. reaktive Objekte (eigentlich eine Funktion) können mit reactive() gesetzt werden.
  • Jeder Codeblock, in dem reaktive Objekte verwendet werden, wird erneut ausgeführt wenn es eine Eingabe gibt.





10 / 16

Reaktivität

  • input kann nur in reaktiver Umwelt gelesen werden (z.B., render*).
  • Reaktive Umwelten bzw. reaktive Objekte (eigentlich eine Funktion) können mit reactive() gesetzt werden.
  • Jeder Codeblock, in dem reaktive Objekte verwendet werden, wird erneut ausgeführt wenn es eine Eingabe gibt.





11 / 16

render*()

  • Um Veränderungen durch reaktive Objekte zu ermöglichen, müssen die entsprechenden Outputs mit speziellen Funktionen gerendert werden.
  • Verschiedene render*() Funktionen existieren in shiny, z.B.:
    • renderPlot()
    • renderTable()
    • renderText()
  • Viele Pakete bieten eigene render Funktionen, z.B. renderLeaflet() oder renderPlotly().





12 / 16

{...}

  • Mit geschweiften Klammern {} können mehrere Zeilen Code als zusammenhängender Code Block definiert werden.
  • Verwende {} innerhalb reactive() und render*() Funktionen.
# Beispiel Code Block
{
a <- 1
a
a + 2
}
## [1] 3
# Code Block in renderPlot()
renderPlot({
n_colors <- length(unique(basel$bildung))
farben <- viridis(n_colors)
ggplot(...) +
geom_point() +
scale_color_manual(values = farben)
})
13 / 16

Beispiel

  • Input definiert Merkmal.
  • Reaktiver Datensatz, gefiltert nach Input.
  • Verwendung des reaktiven Datensatzes in zwei verschiedenen Plots.



# Widget für User Input
checkboxGroupInput("MERKMAL", "TITEL", ...)
# Reaktive Daten generieren
DATEN_REAKTIV <- reactive({
DATEN %>%
filter(VARIABLE %in% input$MERKMAL)
})
# Verwende Reaktive Daten mit Klammern
# Plot 1
renderPlot({
DATEN_REAKTIV() %>%
ggplot(aes(...)) +
geom_point()
})
# Plot 2
renderPlot({
DATEN_REAKTIV() %>%
ggplot(aes(...)) +
geom_histogram()
})
14 / 16

Ansätze

  • shiny
    • Pro: Volle Flexibilität.
    • Contra: Hohe Komplexität.
  • shinydashboard
    • Pro: Niedrigere Komplexität.
    • Contra: Weniger Flexibilität.
  • flexdashboard
    • Pro: Sehr einfach, da Ausbau von Markdown.
    • Contra: Niedrige Flexibilität.
15 / 16
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow