Version [93248]
Dies ist eine alte Version von TutoriumGrundlagenStatistikLinegraph1 erstellt von FabianEndres am 2019-01-22 19:21:52.
Als erste Aufgabe wird ein Linegraph oder auch im deutschen Kantengraph erstellt.
Hierfür werden drei R-Dateien erstellt. (app.R, server.R, ui.R)
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)
<< Zurück | >> Weiter |
<< Zurück zur Übersicht: Tutorium Grundlagen Statistik
CategoryTutorienFKITWS1819