Boxplot
Die zweite Aufgabe beschäftigt sich mit der Erstellung eines Boxplots.
Unter einem Box-Plot versteht man ein Diagramm, das zur grafischen Darstellung der Verteilung eines ordinalskalierten Merkmals verwendet wird. Es fasst dabei verschiedene robuste Streuungs- und Lagemaße in einer Darstellung zusammen. Der Box-Plot soll schnell einen Eindruck darüber vermitteln, in welchem Bereich die Daten liegen und wie sie sich über diesen Bereich verteilen. Deshalb werden alle Werte der sogenannten Fünf-Punkte-Zusammenfassung, also der Median, die zwei Quartile und die beiden Extremwerte, dargestellt.
server.R
Wir beginnen wieder mit der server.R Datei. Die Bibliotheken sowie die Datensätze bleiben diesmal gleich.
Für diese Aufgabe benötigen sie nun lediglich einen Schieberegler, ein Eingabefeld und 3 Auswahlmöglichkeiten. Die Auswahlmöglichkeiten sind zuständig für das Anzeigen von Wind, Temperatur oder beidem gemeinsam. Zusätzlich soll die Funktion "Violinen anzeigen" bereitgestellt werden.
library(shiny)
library(ggplot2)
server <- function(input, output) {
rV <- reactiveValues(
data = airquality[c('Wind', 'Temp', 'Month', 'Day')]
)output$month <- renderUI({
sliderInput(inputId = 'month', label = 'Monat',
min = min(airquality['Month']), max = max(airquality['Month']), step = 1,
value = min(airquality['Month'])
)
})output$day <- renderUI({
numericInput(inputId = 'day', label = 'Tage pro Partition',
min = 1, max = 31, step = 1,
value = 3
)
})output$showViolin <- renderUI({
checkboxInput(inputId = "showViolin", label = "Violinen anzeigen", value = FALSE)
})output$showAttribute <- renderUI({
radioButtons(inputId = 'showAttribute', label = 'Anzeigen: ',
choices = c('Wind', 'Temperatur', 'Beides'),
selected = 'Beides')
rV$data$group <- floor((rV$data$Day - 1) / input$day)
})output$boxPlot <- renderPlot({
p <- numeric()
if(input$showAttribute == 'Wind'){
p <- ggplot(rV$data[rV$data$Month == input$month, ], aes(y = Wind, x = Day, group = group))
if (input$showViolin == TRUE) {
p <- p + geom_violin(trim = FALSE, draw_quantiles = TRUE)
}
p <- p + geom_boxplot(width = 0.1)
}
else if(input$showAttribute == 'Temperatur'){
p <- ggplot(rV$data[rV$data$Month == input$month, ], aes(y = Temp, x = Day, group = group))
if (input$showViolin == TRUE) {
p <- p + geom_violin(trim = FALSE, draw_quantiles = TRUE)
}
p <- p + geom_boxplot(width = 0.1)
}
else{
p <- ggplot(rV$data[rV$data$Month == input$month, c('Wind', 'Day', 'group')], aes(y = Wind, x = Day, group = group))
if (input$showViolin == TRUE) {
p <- p + geom_violin(trim = FALSE, draw_quantiles = TRUE) +
geom_violin(trim = FALSE, draw_quantiles = TRUE,
data = rV$data[rV$data$Month == input$month, c('Temp', 'Day', 'group')],
aes(y = Temp, x = Day, group = group))
}
p <- p + geom_boxplot(width = 0.1, fill = 'red', alpha = 0.5) +
geom_boxplot(width = 0.1,
data = rV$data[rV$data$Month == input$month, c('Temp', 'Day', 'group')],
aes(y = Temp, x = Day, group = group), fill = 'lightblue', alpha = 0.5)
}
p
})}
ui.R
Im Benutzerinterface müssen nun die Auswahlmöglichkeiten "month, day, showViolin, showAttribute" festgelegt werden.
ui <- fluidPage(
titlePanel("Demo 4_Boxplots"),
sidebarLayout(
sidebarPanel(
htmlOutput('month'),
htmlOutput('day'),
htmlOutput('showViolin'),
htmlOutput('showAttribute')
),
mainPanel(
plotOutput('boxPlot')
)
))
app.R
Die app.R bleibt hier komplett identisch.
source('server.R', encoding = "UTF-8")
source('ui.R', encoding = "UTF-8")
shinyApp(ui = ui, server = server)
Hierkönnen Sie den Quellcode ohne Kommentare zusammengefasst herunterladen:
Boxplot als .txt
https://de.wikipedia.org/wiki/Box-Plot
<< Zurück | >> Weiter |
<< Zurück zur Übersicht: Tutorium Grundlagen Statistik
CategoryTutorienFKITWS1819