Version [93322]
Dies ist eine alte Version von TutoriumGrundlagenStatistikBoxplot erstellt von FabianEndres am 2019-01-29 18:28:59.
Boxplott
Die zweite Aufgabe beschäftigt sich mit der Erstellung eines Kantengraph Diagramms beziehungsweise eines Boxplots. Ziel ist es hier eine rote Linie für die Temperatur und eine Blaue Linie für den Wind auszugeben.
server.R
Wir beginnen wieder mit der server.R Datei. Die Bibliotheken sowie die Datensätze bleiben diesmal gleich.
Da im Programm später die Tage und Monate geändert werden sollen werden hierfür Schieberegler in der ui erstellt. Um die dort eingegebenen Werte
verwenden zu können müssen sie in der server.R ausgelesen werden. Ähnlich wie in HTML, dort werden Input Felder erstellt und anschließend anhand
des Labels kann der Inhalt des Feldes ausgelesen werden. So ist es auch mit der Auswahl zwischen Wind und Temperatur. Auch diese Abfrage muss in der
server.R definiert 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'){
'Wind'){
p <- ggplot(rV$data[rV$data$Month
input$month, ], aes(y = Wind, x = Day, group = group))
if (input$showViolin TRUE) {
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))
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))
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')],
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
Die ui bleibt weitgehend gleich. Lediglich die Zeile htmlOutput('yAxis'), fällt weg.
Das bedeutet, dass die Auswahl zwischen Wind und Temperatur wegfällt.
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)
Hier könnt ihr den Quellcode ohne Kommentare zusammengefasst herunterladen:
Boxplot als .txt
TutoriumGrundlagenStatistikScatterplot<< Zurück | >> Weiter zur Übersicht |
<< Zurück zur Übersicht: Tutorium Grundlagen Statistik
CategoryTutorienFKITWS1819