R Shiny dataTableOutput不显示刷子点

时间:2015-07-16 04:28:35

标签: r ggplot2 shiny brush

我正在使用ggplot2数据集中的Iris数据开发一个R Shiny仪表板。 它有三个主要组件,一个侧边栏面板,用于选择要在图中显示的变量,一个带有刷点的ggplot和一个数据表,下面显示了刷点的数据。 一切都很完美,除了数据表似乎没有选择表上的数据点。据我所知,它与服务器中的输出$ plot_brushed_points 行有关。 任何帮助将不胜感激!

library(shiny)
library(ggplot2)

useri <- shinyUI(pageWithSidebar(
headerPanel("Reactive Plot"),
sidebarPanel(
selectInput('x','X-Axis',names(iris)),
selectInput('y','Y-Axis',names(iris)),
selectInput('color','Color',c('None',names(iris[5])))),
mainPanel(uiOutput("plotui"),dataTableOutput("plot_brushed_points"))))

serveri <- shinyServer(function(input,output) {
output$plot <- renderPlot({
p <- ggplot(iris,aes_string(x=input$x, y=input$y))+geom_point()+theme_bw()
if(input$color != 'None')
  p <- p + aes_string(color=input$color)
print(p)
})
output$plotui <- renderUI(plotOutput("plot",brush = brushOpts("plot_brush")))
output$plot_brushed_points <- renderDataTable(brushedPoints(iris,input$plot_brush,input$x,input$y), options=list(searching=FALSE, paging = FALSE))
})

shinyApp(useri, serveri)

我应该注意数据表显示,你可以看到它刷新,它只是没有填充任何数据。

修改

上面的脚本有一个功能,当且仅当您选择绘图的整个区域时,它才会显示数据表中的所有值。

2 个答案:

答案 0 :(得分:2)

我遇到了完全相同的问题,但即使选择了所有点,我也无法获得输出:

output$dt <- renderDT(
  expr = brushedPoints(acled_selected(), input$mapbrush), 
  options = list(lengthChange = FALSE, rownames=FALSE)
  )

我在这里找到了一个解决方案: R Shiny does not display the output data table

这似乎对我有用:

  brushd <- reactive({
    user_brush <- input$mapbrush
    brushedPoints(acled_selected(), user_brush, xvar = "LONGITUDE", yvar = 
"LATITUDE")
    })

  output$dt<-DT::renderDataTable({DT::datatable(brushd())})

答案 1 :(得分:0)

我有类似的问题。我最终解决了这个问题(在阅读了这篇文章之后:https://github.com/rstudio/shiny/issues/998),没有在剧情上调用print,只是返回它。所以:

output$plot <- renderPlot({
p <- ggplot(iris,aes_string(x=input$x, y=input$y))+geom_point()+theme_bw()
if(input$color != 'None')
p <- p + aes_string(color=input$color)
#print (p)
p
})