我有一个数据帧,看起来像这样:
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
。
编辑
这是代码。我评论了一些行,因为您没有提供对象env1
和env1_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)