具有交互式x和y的闪亮ggplot不会将信息传递给刷

时间:2016-01-06 21:13:18

标签: r ggplot2 shiny interactive

我正在尝试创建一个界面,在从下拉菜单中选择x和y变量之后,用户可以观察散点图,并使用画笔选择点。这些点的数据将显示在数据表中。 这在静态图上完美地工作,其中x和y变量不会改变。但是当选择x和y变量是输入选项的结果时,虽然绘图可以正常工作,但画笔似乎没有正确读取数据。

它不会让我上传图像,但是当您检查画笔的文本输出时,x和y值的范围是0-1,当您可以读取轴标签的实际值时,范围从0-7。所以我显然没有正确设置画笔。 数据表中出现错误消息“Error:brushedPoints:无法从画笔中自动推断出”xvar“

enter image description here

ui<-fluidPage(
  fluidRow(
 column(4,selectInput("X_axis_Category",label="X axis Category",choices=as.list(colnames(scores_test)),selected="Ecological_Stress")        
),
column(4,selectInput("Y_axis_Category",label="Y axis Category",choices=as.list(colnames(scores_test)),selected="Ecological_Health")           
),
column(4,selectInput("Z_axis_Category",label="Z axis Category",choices=as.list(colnames(scores_test)),selected="Comprehensive_Score")
),

 column(12, plotOutput("plotui",brush=brushOpts("plot_brush",resetOnNew=T))),
 column(12,verbatimTextOutput("brush_info")),

wellPanel(width=9,h4("Points selected by brushing, with brushedPoints():"),dataTableOutput("plot_brushed_points"))
  )
)

server<-function(input,output){


  sample_scores=read.csv(file="D:\\GIS Projects\\TreesforTribs\\HUC12_Watershed_Scores.csv",sep=",")
dat<-sample_scores  
x_means<-reactive({
  mean(sample_scores[,input$X_axis_Category])
})
  y_means<-reactive({
    mean(sample_scores[,input$Y_axis_Category])

})
  x_var<-reactive({
      as.character(input$X_axis_Category)
    })

  y_var<-reactive({
    as.character(input$Y_axis_Category)
  })

  output$plotui= renderPlot({

     pc<-ggplot(sample_scores,aes_string(x=input$X_axis_Category,y=input$Y_axis_Category,size=input$Z_axis_Category,colour=input$Z_axis_Category))+ geom_point()+geom_vline(xintercept=x_means())+geom_hline(yintercept=y_means()) +
  guides(color=guide_legend(),size=guide_legend())

print (pc)
  })


   output$plot_brushed_points<-renderDataTable({
     res<-brushedPoints(dat,input$plot_brush)
       subset_res<-subset(res,select=c(HUC12,Ecological_Health,Ecological_Stress,Comprehensive_Score))
 print (subset_res)
   })

  output$brush_info<-renderPrint({

    cat("input$plot_brush:\n")
     str(input$plot_brush)
      })


    }

1 个答案:

答案 0 :(得分:1)

好的,我修好了(不是那种只要你放弃并寻求帮助的方式 - 你找到了你的愚蠢错误吗?)

对于记录,画笔选项不起作用,因为当我写剧情时,我使用了“print”。

output$plotui= renderPlot({

 pc<-ggplot(sample_scores,aes_string(x=input$X_axis_Category,y=input$Y_axis_Category,size=input$Z_axis_Category,colour=input$Z_axis_Category))
+ geom_point()+geom_vline(xintercept=x_means())+geom_hline(yintercept=y_means()) +guides(color=guide_legend(),size=guide_legend())

print (pc)
})

除了画笔没有正确读取x和y轴之外,这创建了一个看似精确的图表。当我删除“打印”并刚刚调用绘图时,画笔按照我想要的方式工作。

output$plotui= renderPlot({     
pc<-ggplot(sample_scores,aes_string(x=input$X_axis_Category,y=input$Y_axis_Category,size=input$Z_axis_Category,colour=input$Z_axis_Category))
+ geom_point()+geom_vline(xintercept=x_means())+geom_hline(yintercept=y_means()) +guides(color=guide_legend(),size=guide_legend())
#print (pc) ELIMINTATE THE PRINT OPTION
pc
})