library(shiny)
library(plotly)
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
shinyServer(
function(input, output) {
data <- read.csv("opendata.csv", sep = ',', quote = '"', dec = '.', stringsAsFactors = FALSE)
data$date <- as.Date(data$date, "%Y-%m-%d")
output$region <- renderUI({
selectInput("region", "Choose a region:", as.list(unique(data$region)), selected = levels(data$region)[60] )
})
output$rname <- renderUI({
selectInput("rname", "Choose a variable:", as.list(unique(data$name)), selected = levels(data$name)[1])
})
output$text1 <- renderText({
paste("You have selected: ", input$rname, " in ", input$region)
})
# output$value <- renderPrint({ input$slider })
output$slider1 <- renderUI({
if (input$period == "yearbegin"){
sliderInput("slider1", label = "From year", min = 2013, max = 2017, value = 2016, sep = "")
}
})
output$slider2 <- renderUI({
if (input$period == "year"){
sliderInput("slider2", label = "Years range", min = 2013, max = 2017, value = c(2015,2016), sep = "")
}
})
output$dates <- renderUI({
if (input$period == "mon"){
dateRangeInput("dates", label = "Date range", start = "2013-01-01", end = "2017-04-14",
min = "2013-01-01", max = "2017-04-14")
}
})
output$distPlot <- renderPlotly({
if (input$period == "all")
{
dt <- data[data$region == input$region & data$name == input$rname, ]
}
if (input$period == "yearbegin")
{
sl <- input$slider1
year <- as.character(sl)
d <- as.Date(paste(year,"-01-01", sep=""))
dt <- data[data$region == input$region & data$name == input$rname & data$date >= d, ]
}
if (input$period == "year")
{
# d <- as.Date('2017-04-14')
# d <- d %m+% years(-1)
sl <- input$slider2
year1 <- as.character(sl[1])
year2 <- as.character(sl[2])
d1 <- as.Date(paste(year1,"-01-01",sep=""))
d2 <- as.Date(paste(year2,"-01-01",sep=""))
dt <- data[data$region == input$region & data$name == input$rname & data$date >= d1 & data$date <= d2, ]
}
if (input$period == "mon")
{
# d <- as.Date('2017-04-14')
# d <- d %m+% months(-1)
d1 <- as.Date(input$dates[1])
d2 <- as.Date(input$dates[2])
dt <- data[data$region == input$region & data$name == input$rname & data$date >= d1, ]
}
#plot_ly(x=~date, y=~value, data=dt, type = 'scatter', mode = 'lines')
p <- ggplot(data = dt, aes(x=date, y=value)) + geom_line()
if ("1" %in% input$chkGroup)
p <- p + geom_smooth(method = "loess", aes(color="Auto Model"))
if ("2" %in% input$chkGroup)
p <- p + geom_smooth(method = "glm", aes(color="Linear Model"), formula = y~x)
if ("3" %in% input$chkGroup)
p <- p + geom_smooth(method = "glm", aes(color="Poly Model"), formula= (y ~ poly(x,2)), linetype = 1)
p <- ggplotly(p)
})
})