我正在使用问题“ToolTip when you mouseover a ggplot on shiny”中的答案向我的闪亮应用程序中的ggplot对象添加鼠标悬停功能。与此相反,我需要在ggplot中为我的应用程序设置coord_fixed
。这是一个最小的工作示例:
library(shiny)
library(ggplot2)
ui <- fluidPage(
plotOutput("plot1", height = "300px", width = "100%",
hover = hoverOpts(id = "plot_hover")),
verbatimTextOutput("hover_info")
)
server <- function(input, output) {
output$plot1 <- renderPlot({
ggplot(mtcars, aes(x=mpg,y=qsec)) + geom_point() +
coord_fixed(xlim=c(0,30),ylim=c(0,30))
})
output$hover_info <- renderPrint({
if(!is.null(input$plot_hover))
paste0(input$plot_hover$x, " ", input$plot_hover$y)
})
}
shinyApp(ui, server)
现在我的问题是我没有得到正确的x坐标。在下面的屏幕截图中,鼠标指针靠近原点,但返回的x值大约为9:
如果我调整浏览器窗口的大小,使得绘图和窗口边框之间没有空格,则坐标是正确的。在我看来,hoverOpts
只是忽略了ggplot的coord_fixed
布局。
设置width = "300px"
而不是width = "100%"
可能是一种解决方法。但这对我来说不是一个真正的选择,因为我一般需要一个可变宽度的图例,直到绘图区域内的情节。
如何获得正确的x值?