【问题标题】:Retrieving source data information from a barplot in R shiny interactively以交互方式从 R 中的条形图中检索源数据信息
【发布时间】:2018-02-02 21:20:04
【问题描述】:

我在 R 中有一个 barplot 闪亮。我想要关注:

当用户单击该条形图中的一个“条形图”时,将弹出另一个框并显示来自使用的数据框的数据信息,显示哪些数据点有助于创建该“条形图”。

代码:

ui <- fluidPage(
  sidebarLayout(sidebarPanel(),
                mainPanel(plotOutput("p",click = "plot_click"),
                textOutput("info"))))

server <- function(input,output) {
    output$p <- renderPlot(ggplot(mtcars,aes(x=factor(carb),y=mpg))+
                         geom_bar(stat="summary",fun.y="mean"))
    output$info <- renderText(
      paste0("x=", input$plot_click$x, "\n",
           "y=", input$plot_click$y))
}
shinyApp(ui, server)

当我点击一个条时,它会显示 (x,y) 坐标值。但我想检索相应的因子(碳水化合物)。 如果我点击一个栏,如何取回源信息。 理想情况是:当用户单击 carb=4 的条形时,它应该显示 carb=4 的 mtcars 数据集的源信息。但我不知道如何从该条形图中以交互方式获取“carb=4”信息。

【问题讨论】:

    标签: r ggplot2 shiny interactive


    【解决方案1】:

    经过编辑,更具体地适用于分类 x 轴条形图。

    您需要将点击值翻译成您想要的表格。我已将单击中的 x 值四舍五入,以子集 mtcars 数据框:

    library(ggplot2)
    library(shiny)
    
    ui <- fluidPage(
      sidebarLayout(sidebarPanel(),
                    mainPanel(plotOutput("p",click = "plot_click"),
                              textOutput("info"),
                              tableOutput("table"))))
    
    server <- function(input,output) {
      output$p <- renderPlot(ggplot(mtcars,aes(x=factor(carb),y=mpg))+
                               geom_bar(stat="summary",fun.y="mean"))
      output$info <- renderText(
        paste0("x=", input$plot_click$x, "\n",
               "y=", input$plot_click$y))
    
      output$table <- renderTable({
        ##magic happens here##
        output$table <- renderTable({
         carb <- unique(mtcars$carb)
         carb <- carb[order(carb)]
         x <- carb[round(input$plot_click$x)]
         mtcars[mtcars$carb == x,]
       })
    
      })
    }
    shinyApp(ui, server)
    

    【讨论】:

    • 没关系。谢谢,但它并不可靠,即如果类别是“Name1”、“name2”而不是“1”、“2”、“3”,则这种舍入不起作用,除非你对这些因素进行整体重新编号等等等等。此外,根据条形宽度,我们需要调整我们需要多少舍入。我不能用这种舍入方法自动化它。你的方法总比什么都没有好,但它有点保守。寻找稳健的方法。也许没有。顺便谢谢。此外,在堆积条形图的情况下,它会更加复杂。
    • 重点是:您必须翻译 x,y 点击数据,根据该图表执行图表:shiny.rstudio.com/articles/plot-interaction-advanced.html
    猜你喜欢
    • 2017-09-24
    • 2022-07-05
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多