【问题标题】:Display graphic according to selected input根据所选输入显示图形
【发布时间】:2021-01-13 08:15:28
【问题描述】:

我想根据第一个选项卡中选择的输入在另一个选项卡中显示一个图形。

对于“auto”,我想在 TAB B 中显示一个图形(名为“graph_auto”),如果选择了“boat”,我想在 TAB B 中显示另一个图形(名为“graph_boat”)。这就是我做到了:

---
title: "my report"

output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    social: menu

runtime: shiny
---


```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
library(htmltools)
library(flextable)
library(plotly)


```


RESULTS
=======================================================================


Column
-----------------------------------------------------------------------

### TAB A

```{r}
# creation du tibble sur ce KPI

my_data = data.frame(product = rep(c("auto", "boat"),each=2),
                     year = c("2009", "2011", "2005", "2019"),
                     price = c("10 000", "20 000", "7 000", "60 000"),
                     speed = c("220", "250", "70", "140"))


ui <- fluidPage(
  selectInput("product", "", choices = my_data$product),
  uiOutput("tbl")
)

server <- function(input, output, session) {
  output$tbl <- renderUI( {
    out <- subset(my_data, product ==input$product)
    library(flextable)
    htmltools_value((flextable(out)))
  })
}

shinyApp(ui, server)


```


Column 
-----------------------------------------------------------------------

### TAB B
```{r}
# if "auto" is selected, then display this graphic
graph_auto <- plot_ly(midwest, x = ~percollege, color = ~state, type = "box")

# if "boat" is selected, then display this graphic
graph_boat <- plot_ly(midwest, x = ~percollege, type = "box", width = 600, height = 400)



```

但我坚持根据所选产品显示图形。我们如何从另一个选项卡访问选定的输入?一些帮助将不胜感激

【问题讨论】:

标签: r shiny dashboard shinydashboard flexdashboard


【解决方案1】:

这是你的想法吗(注意第一个情节不起作用)?

---
title: "my report"

output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    social: menu

runtime: shiny
---


```{r setup, include=FALSE}
library(htmltools)
library(flextable)
library(plotly)



my_data = data.frame(product = rep(c("auto", "boat"),each=2),
                     year = c("2009", "2011", "2005", "2019"),
                     price = c("10 000", "20 000", "7 000", "60 000"),
                     speed = c("220", "250", "70", "140"))
```


RESULTS
=======================================================================


Column
-----------------------------------------------------------------------

### TAB A

```{r}
selectInput("product", "", choices = my_data$product)

renderUI({
  out <- subset(my_data, product ==input$product)
  htmltools_value((flextable(out)))
})
```


Column 
-----------------------------------------------------------------------

### TAB B
```{r}
# if "auto" is selected, then display this graphic
renderPlotly({
  if (input$product == "auto") {
    plot_ly(midwest, x = ~percollege, color = ~state, type = "box")
  }
  # if "boat" is selected, then display this graphic
  if (input$product == "boat") {
    plot_ly(midwest, x = ~percollege, type = "box", width = 600, height = 400)
  }
})
```

您实际上不需要在flexdashboard 中包含闪亮应用的结构,而只需在单个 UI/render 元素中包含。看看the help page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2023-01-27
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多