簡體   English   中英

Shiny:在uiOutput中的一列添加一個plot

[英]Shiny: Add a plot to a column in uiOutput

我正在為 uiOutput 動態生成流體行,因為用戶選擇將決定有多少行。 對於每一行,我有 3 列 - 兩列是文本,第三列是 plot。

我的文本可以正常工作,但我正在努力弄清楚如何將 plot 放入其中。

在下面的 reprex 中,它是相同的 plot,但在我的實際示例中,我將需要使用一個不同於傳遞到 map() 的表,但基於其中一個 .x 值對其進行過濾。

library(tidyverse)

ui <- fluidPage(
  uiOutput("row_mt")
)

server <- function(input, output) {
  output$row_mt <- renderUI({
    mt_list <- mtcars %>%
      rownames_to_column(var = "model") %>%
      rowwise() %>%
      group_split() %>%
      map(~{
        tagList(fluidRow(
          column(4,
                 .x$model),
          column(4,
                 .x$mpg),
          column(4, 
                 mtcars %>% 
                 filter(cyl == .x$cyl) %>% 
                   ggplot(aes(x = mpg, y = cyl)) + geom_point())
        ),
        br()
        )

      })

    tagList(mt_list)
  })
}

shinyApp(ui, server)

您應該嘗試使用 renderPlot 創建renderPlot ,然后使用plotOutputrenderUI中顯示它。

嘗試這個

server <- function(input, output) {
  
  output$myplot <- renderPlot({
    mtcars %>%
      rownames_to_column(var = "model") %>%
      rowwise() %>%
      group_split() %>%
      map(~{
                 mtcars %>% 
                   filter(cyl == .x$cyl) %>% 
                   ggplot(aes(x = mpg, y = cyl)) + geom_point()
        
      })
  })
  
  output$row_mt <- renderUI({
    mt_list <- mtcars %>%
      rownames_to_column(var = "model") %>%
      rowwise() %>%
      group_split() %>%
      map(~{
        tagList(fluidRow(
          column(4,
                 .x$model),
          column(4,
                 .x$mpg),
          column(4, 
                 plotOutput("myplot", height=100, width=100))
        ),
        br()
        )
        
      })
    
    tagList(mt_list)
  })
}

輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM