shiny code vs plain r code ggplot

...I have some shiny R code where the plot comes out all wrong. the correct graph is generated by this plain r code: ....any ideas?

library(ggplot2)
library(scales)
library(shiny)
library(stringi)


########################################################################3
file = "http://dd.weather.gc.ca/hydrometric/csv/SK/hourly/SK_hourly_hydrometric.csv"
skdat <- read.csv(file, head=T, sep=",", dec=".", stringsAsFactors = F)
colnames(skdat) <- c("ID", "Date", "WaterLevel", "Grade1", "Symbol1",
                     "QAQC-1", "DischargeDebit", "Grade2", "Symbol2",
                     "QAQC-2")

subds <- subset(skdat, ID=='05EF001')
#subds$datetime <- as.POSIXct(subds$Date, format = "%Y-%m-%dT%H%m%S")
subds$datetime <- as.POSIXct(subds$Date, format = "%Y-%m-%dT%H:%M:%OS")#subds$datetime <- as.POSIXct(subds$Date, format = "%Y-%m-%dT%H%m%S-06:00")

p2 <- ggplot(subds, aes(x = datetime, y = WaterLevel)) + geom_line()
p2
########################################################
library(ggplot2)
library(scales)
library(shiny)

ui <- fluidPage(
  
  # Sidebar layout with a input and output definitions
  sidebarLayout(
    
    # Inputs
    sidebarPanel(
      
      # Select variable for y-axis
      selectInput(inputId = "y", 
                  label = "Y-axis:",
                  choices = c("Water Level" = "WaterLevel", 
                              "Discharge Debit" = "DischargeDebit"), 
                  selected = "WaterLevel"),
      
      selectInput(inputId = "z", 
                  label = "station:",
                  choices = c(
                    "NORTH SASKATCHEWAN RIVER NEAR DEER CREEK"="05EF001",
                    "BATTLE RIVER NEAR PONOKA"="05FA001",
                    "BATTLE RIVER AT DUHAMEL"="05FA011",
                    "PIGEON LAKE AT PIGEON LAKE PROVINCIAL PARK"="05FA013",
                    "MASKWA CREEK NO. 1 ABOVE BEARHILLS LAKE"="05FA014"
), 
selected = "05EF001")
      
    ),
    
    # Output
    mainPanel(
      plotOutput(outputId = "lineplot")
    )
  )
)



server <- function(input, output) {
file = "http://dd.weather.gc.ca/hydrometric/csv/SK/hourly/SK_hourly_hydrometric.csv"
skdat <- read.csv(file, head=T, sep=",", dec=".", stringsAsFactors = F)
colnames(skdat) <- c("ID", "Date", "WaterLevel", "Grade1", "Symbol1",
                     "QAQC-1", "DischargeDebit", "Grade2", "Symbol2",
                     "QAQC-2")

subds <- subset(skdat, ID=input$z)
subds$datetime <- as.POSIXct(subds$Date, format = "%Y-%m-%dT%H:%M:%OS")
output$lineplot <- renderPlot({ 
  ggplot(subds, aes(x = datetime, y = !!as.name(input$y))) + geom_line() 
})  


}

# Create a Shiny app object
shinyApp(ui = ui, server = server)

You have to use input$z inside of a reactive expression, also the correct logical operator is "==" not "="

output$lineplot <- renderPlot({
        subds <- subset(skdat, ID == input$z)
        subds$datetime <- as.POSIXct(subds$Date, format = "%Y-%m-%dT%H:%M:%OS")
        ggplot(subds, aes(x = datetime, y = !!as.name(input$y))) +
        geom_line()
})
3 Likes

ha that is great ...thanks again Andres!!!!

I added the code in my original post if anyone is looking for it ...look up the page :slight_smile:

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.