我正在使用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
时,它不起作用。理想情况下,用户可以更改时间范围,并且图形可以更新。
答案 0 :(得分:1)
对于子集,将使用%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)
})
}