Обновление графика линии запаса на основе выбора пользователя DateRangeInput - Shiny App - PullRequest
0 голосов
/ 17 февраля 2020

Я использую данные акций из Quantmod и ищу способ использования DateRangeInput в блестящем приложении, чтобы выбор пользователя был отражен на графике ggplot.

ui <- fluidPage(
  titlePanel("Stock App"),

  mainPanel(
    selectInput("stock", "Select a Stock(s):", choices = unique(all_stocks_df$Stock), multiple = TRUE, selected = "AAPL"),
    dateRangeInput("daterange", "Select a timeframe to be plotted", start = "2010-01-01", end = "2020-01-01")),

  tabsetPanel(
    tabPanel("Line Graph", plotOutput("line"))

  )
)

server <- function(input, output, session) {
  output$line <- renderPlot({
    stock_subset <- subset(all_stocks_df, Stock == input$stock)
    ggplot () + 
      geom_line(aes(x=input$daterange, y=Close, color = Stock),
                data = stock_subset)
  })


}

shinyApp(ui=ui, server=server)

Фрейм данных all_stocks_df, с которым я генерирую график, выглядит следующим образом:

Date       Close     Stock 
2019-12-31 293.65     AAPL 
... 
2007-01-03 11.97      AAPL 

2019-12-31 1847.84    AMZN 
... 
2007-01-03 38.70      AMZN 

Когда я ввожу input$daterange в качестве аргумента X для моего ggplot линейного графика , это не работает. В идеале пользователь должен изменить временные рамки, а график обновится.

1 Ответ

1 голос
/ 17 февраля 2020

Для подмножества будет использоваться %in% вместо ==, поскольку в вашем selectInput можно выбрать несколько акций. Также будет фильтровать / подмножество input$daterange перед построением графика.

server <- function(input, output, session) {
  output$line <- renderPlot({
    stock_subset <- subset(all_stocks_df, Stock %in% input$stock & Date>= input$daterange[1] & Date <= input$daterange[2])
    ggplot () + 
      geom_line(aes(x=Date, y=Close, color = Stock), data = stock_subset)
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...