我正在使用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)
我应该注意数据表显示,你可以看到它刷新,它只是没有填充任何数据。
修改
上面的脚本有一个功能,当且仅当您选择绘图的整个区域时,它才会显示数据表中的所有值。
答案 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
})