[英]Reactive plots in shiny with multiple datasets
我正在嘗試生成閃亮的反應式UI。
我有一個數據集,其中包含兩年內超市產品的每日銷售額。 例如:
product Total_Sales Date(YYYY-MM-DD)
1. 'Coke 0.5 L' 23 2014-01-02
2. 'Sprite 0.5 L' 18 2014-01-02
3. 'CornFlakes 1.kg' 21 2014-01-02
4. 'Coke 0.5 L' 25 2014-01-03
5. 'BurgersX6 1.kg' 8 2014-01-03
6. 'CornFlakes 1.kg' 17 2014-01-03
我希望我的用戶選擇一種產品作為輸入,並在給出輸入的情況下繪制相應的time_series。
selectInput("product", "Choose a product:",
choices = as.factor(levels(df$product)))
這很好。
在服務器中:
datasetInput <- df
output$tsplot <- reactive({renderPlot(
{dataset <- datasetInput[product==input$product,]
plot(as.ts(dataset$Total_Sales,dataset$Date),start=input$start,end=input$end")
}
)
})
不幸的是我沒有積蓄。 相反,如果我放了一個反應性輸入datasetInput <-df [product == input $ product,]並相應地更改了output $ tsplot,則我得到了第一個可用輸入作為輸出,但是當我更改input $ product時,該圖保持不變。 我剛剛接觸到光澤,歡迎您的幫助,謝謝
嘗試以reactive
表達式過濾輸入數據幀,然后在renderPlot
調用結果:
datasetInput <- reactive({
df[df$product == input$product, ]
})
output$tsplot <- renderPlot({
dataset <- datasetInput()
plot(as.ts(dataset$Total_Sales, dataset$Date, start = input$start, end = input$end))
})
編輯:
根據您的數據:
df <- read.table(
text = " Name Total_Sales Date
1. 'Coke 0.5 L' 23 2014-01-02
2. 'Sprite 0.5 L' 18 2014-01-02
3. 'CornFlakes 1.kg' 21 2014-01-02
4. 'Coke 0.5 L' 25 2014-01-03
5. 'BurgersX6 1.kg' 8 2014-01-03
6. 'CornFlakes 1.kg' 17 2014-01-03"
)
df$Date <- as.Date(as.character(df$Date, format = "%Y-%m-%d"))
library("shiny")
ui <- fluidPage(
selectInput("product", "Choose a product:",
choices = levels(df$Name)),
plotOutput(outputId = "tsplot")
)
server <- function(input, output){
datasetInput <- reactive({
df[df$Name == input$product, ]
})
output$tsplot <- renderPlot({
dataset <- datasetInput()
plot(as.ts(dataset$Total_Sales, dataset$Date))
})
}
shinyApp(ui = ui, server = server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.