我正在尝试创建一个界面,在从下拉菜单中选择x和y变量之后,用户可以观察散点图,并使用画笔选择点。这些点的数据将显示在数据表中。 这在静态图上完美地工作,其中x和y变量不会改变。但是当选择x和y变量是输入选项的结果时,虽然绘图可以正常工作,但画笔似乎没有正确读取数据。
它不会让我上传图像,但是当您检查画笔的文本输出时,x和y值的范围是0-1,当您可以读取轴标签的实际值时,范围从0-7。所以我显然没有正确设置画笔。 数据表中出现错误消息“Error:brushedPoints:无法从画笔中自动推断出”xvar“
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)
})
}
答案 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
})