无法在带有悬停选项的图形下打印数据帧(在R Shiny中)



我有一个数据帧,看起来像这样:

Taux_retour = as.Date(c("2020-06-11", "2020-06-12", "2020-06-13", "2020-06-15", 
"2020-06-16", "2020-06-17", "2020-06-18", "2020-06-19", 
"2020-06-20", "2020-06-22", "2020-06-23", "2020-06-24", "2020-06-25"))
Taux_retour=as.data.frame(Taux_retour)
Taux_retour$n = c(183,94,3,233,247,200,181,125,3,144,155,146,116)
Taux_retour$`Retour (%)`= c(1.55,0.79, 0.03, 1.97, 2.09, 1.69, 1.53, 1.06, 0.03, 1.22, 1.31, 1.23, 0.98)

在我闪亮的网络应用程序中,我想绘制一个图表,并打印用于创建它的数据框架。当我的电脑鼠标在一个点上时,我希望出现相关的信息。例如,如果我指向第一行,希望R打印数据帧的第一行。

这是代码:

ui = dashboardPage(
fluidRow(
box(title = "Evolution du taux de retour : 
(pour plus de détails, passez votre souris sur les points)",
status = "success",
width = 9, 
solidHeader = TRUE,
plotOutput('graphique', 
click = "image_click",
hover = hoverOpts(id = "plot_hover", delayType = "throttle")),
uiOutput("dynamic"))))
server = function(input, output) {

output$graphique= renderPlot({
ggplot(data=Taux_retour, aes(x=Taux_retour,y=`Retour (%)`))+geom_line(col="steelblue", lwd=1) +
ylim(min(Taux_retour$`Retour (%)`), max(Taux_retour$`Retour (%)`)) + theme_light() + theme(legend.position='none') +
labs(y = "Taux de retour (en %)", x="Dates") +
geom_line() + geom_point()+
geom_vline(xintercept=as.numeric(as.Date(env1)+1), color = "olivedrab") +
annotate(geom="text",x=as.Date(env1_g),y=2.0,label="Premier envoi", fontface="bold", color = "#006600")
})

output$dynamic <- renderUI({
hover <- input$plot_hover 
y <- nearPoints(iris, input$plot_hover) # HERE
req(nrow(y) != 0)
verbatimTextOutput("vals")
})

output$vals <- renderPrint({
hover <- input$plot_hover 
y <- nearPoints(iris, input$plot_hover) # HERE
req(nrow(y) != 0)
y
}) 

}
shinyApp(ui = ui, server = server)

问题是,当我在图形上移动鼠标时,什么都不会发生。我想我必须选择一些写着"#HERE";在代码中,但我不能得到什么!如果你有什么想法的话,那就太好了,我在这个错误上花了大约8个小时。。

我也为我的语言错误感到抱歉。。。你一定知道我不是土生土长的斯派克人。。

您不需要这个output$dynamic。只需在UI中放入verbatimTextOutput("vals")即可。

这个问题是由于在nearPoints函数中使用iris,而绘制的数据帧是Taux_retour。将iris替换为Taux_retour

编辑

这是代码。我评论了一些行,因为您没有提供对象env1env1_g

ui = dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
fluidRow(
box(title = "Evolution du taux de retour : 
(pour plus de détails, passez votre souris sur les points)",
status = "success",
width = 9, 
solidHeader = TRUE,
plotOutput('graphique', 
click = "image_click",
hover = hoverOpts(id = "plot_hover", delayType = "throttle")),
verbatimTextOutput("vals")
)
)
)
)
server = function(input, output) {

output$graphique= renderPlot({
ggplot(data=Taux_retour, aes(x=Taux_retour,y=`Retour (%)`)) + 
geom_line(col="steelblue", lwd=1) +
ylim(min(Taux_retour$`Retour (%)`), max(Taux_retour$`Retour (%)`)) + 
theme_light() + 
theme(legend.position='none') +
labs(y = "Taux de retour (en %)", x="Dates") +
geom_line() + geom_point() #+
# geom_vline(xintercept=as.numeric(as.Date(env1)+1), color = "olivedrab") +
# annotate(geom="text",x=as.Date(env1_g),y=2.0,label="Premier envoi", fontface="bold", color = "#006600")
})


output$vals <- renderPrint({
hover <- input$plot_hover 
if(!is.null(hover)){
points <- nearPoints(Taux_retour, hover) 
if(nrow(points)) points
}
}) 

}
shinyApp(ui = ui, server = server)

相关内容

  • 没有找到相关文章

最新更新