Linegraph 1
Die erste Aufgabe beschäftigt sich mit der Erstellung eines Linegraph oder auch im deutschen Liniendiagramm genannt.
Liniendiagramme zeichnen sich dadurch aus, dass vorerst alle Datenpunkte in ein Koordinatensystem eingetragen werden und anschließend miteinander verbunden werden. Sinnvoll ist eine solche Darstellungsform, wenn ein Trend von gewissen Daten über einen Zeitraum hinweg dargestellt werden sollen. Ein einfaches Bespiel wäre die beschleunigung eines Gegenstandes.
Für diese Übung werden drei R-Dateien erstellt. (app.R, server.R, ui.R)
Am Ende soll die Ausgabe wie folgt aussehen:
HINWEIS: Bitte kopieren sie nicht den Quellcode aus dem Wiki heraus, es steht am Ende jeder Übung eine Textdatei mit dem Quellcode als Inhalt zur Verfügung.
server.R
Wir beginnen mit der server.R Datei. Hier werden zu Beginn die 2 Bibliotheken shiny und ggplot2 geladen.
Anschließend wird eine Funktion dem Objekt server zugewiesen und ein Datensatz dem Objekt data zugewiesen.
Der Datensatz airquality wird standardmäßig in R Studio zu Testzwecken mitgeliefert.
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) {
data <- airquality[c('Wind', 'Temp', 'Month', 'Day')]
Hier wird die Option für die Auswahl von Wind oder Temperatur abgefragt.
output$yAxis <- renderUI({
radioButtons(inputId = 'yAxis', label = 'Attribut für y-Achse',
choiceNames = c('Wind', 'Temperatur'), choiceValues = c('Wind', 'Temp'),
selected = 'Wind'
)
})Hier wird der Schieberegler für den Monat abgefragt.
output$month <- renderUI({
sliderInput(inputId = 'month', label = 'Monat',
min = min(data['Month']), max = max(data['Month']), step = 1,
value = min(data['Month'])
)
})Hier wird der Schieberegler für den Tag abgefragt.
output$day <- renderUI({
sliderInput(inputId = 'day', label = 'Tag',
min = 1, max = max(data$Day[data$Month == input$month]), step = 1,
value = c(1, max(data$Day[data$Month == input$month]))
)
})Hier wird der gesamte Plot erstellt aber noch nicht gezeichnet, das Zeichnen folgt erst in der UI.
An dieser Stelle wird also anhand einer IF Abfrage geprueft ob Wind oder Temperatur ausgewählt wurden.
Zusätzlich werden die zuvor definierten Werte mit day und month von den vorherigen Funktionen abgeholt.
output$lineGraph <- renderPlot({
p <- ggplot(data[data$Month == input$month, ][c(input$day[1]:input$day[2]), ]) +
coord_cartesian()
if(input$yAxis == 'Wind')
p <- p + geom_line(aes(Day, Wind))
else if(input$yAxis == 'Temp')
p <- p + geom_line(aes(Day, Temp))
p
})}
ui.R
Die ui dient als Userinterface und stellt die Gewünschten Schieberegler dar. Auch den finalen Plot zeigt uns erst die ui.
ui <- fluidPage(
titlePanel("Old Faithful Geyser Data"), Hier wird der Titel für die Anwendung definiert
sidebarLayout(
sidebarPanel(
htmlOutput('yAxis'), Anzeige des Auswahlmenüs für Temperatur und Wind
htmlOutput('month'), Auswahlschieber für Monat
htmlOutput('day') Auswahlschieber für den Tag
),
mainPanel(
plotOutput('lineGraph') Starten des Plots lineGraph
)
))
app.R
Hier werden die zwei externen Dateien server.R und ui.R geladen und zu einer shinyApp zusammengefasst.
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:
Linegraph 1 als .txt
<< Zurück | >> Weiter |
<< Zurück zur Übersicht: Tutorium Grundlagen Statistik
CategoryTutorienFKITWS1819