R 交互式闪亮应用程序返回错误的坐标

R 交互式闪亮应用程序返回错误的坐标,r,ggplot2,shiny,R,Ggplot2,Shiny,我试图使用Shiny创建一个交互式散点图,在这里我可以点击图形上的任意点,并获得相应的x和y坐标。基本图形(注释掉)使用ggplot给出不同且不正确的数字时,它起作用(即RStudio示例) library(shiny) library(ggplot2) ui <- basicPage( plotOutput("plot1", click = "plot_click"), verbatimTextOutput("info") ) server <- function(in

我试图使用Shiny创建一个交互式散点图,在这里我可以点击图形上的任意点,并获得相应的x和y坐标。基本图形(注释掉)使用ggplot给出不同且不正确的数字时,它起作用(即RStudio示例)

library(shiny)
library(ggplot2)

ui <- basicPage(
  plotOutput("plot1", click = "plot_click"),
  verbatimTextOutput("info")
)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    # plot(mtcars$wt, mtcars$mpg)
    g=ggplot(mtcars,aes(wt,mpg))+geom_point()
    g

  })

  output$info <- renderText({
    paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
  })
}

shinyApp(ui, server)
库(闪亮)
图书馆(GG2)

ui一种可能的方法是使用print()将ggplot2对象打印到屏幕上,然后它似乎会返回[0,1]中的坐标。如果之前记录了打印限制,则可以计算所需的值

library(shiny)
library(ggplot2)

ui <- basicPage(
  plotOutput("plot1", click = "plot_click"),
  verbatimTextOutput("info")
)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    # plot(mtcars$wt, mtcars$mpg)
    g=ggplot(mtcars,aes(wt,mpg))+geom_point()


    # works from version 0.8.9 on: https://stackoverflow.com/questions/7705345/how-can-i-extract-plot-axes-ranges-for-a-ggplot2-object
    a=ggplot_build(g)$layout$panel_ranges[[1]]
    x.range <<- a$x.range
    y.range <<- a$y.range

    print(g)

  })

  output$info <- renderText({

    paste0("x=", x.range[1]+diff(x.range)*input$plot_click$x,
           "\ny=", y.range[1]+diff(y.range)*input$plot_click$y)
  })
}

shinyApp(ui, server)
库(闪亮)
图书馆(GG2)

ui非常感谢Marco的评论,这确实是一个版本号问题。更新到最新版本解决了此问题。现在“正确”的版本起作用了,而我的黑客,就像马可一样,不起作用。我现在使用闪亮1.0.4和ggplot2.2.0

有趣的是,它对你来说是正确的。在我的机器上,我得到了数百个数字,可能是像素。我想知道我的安装是否有问题。同时也有一个hack(发布在下面),但很难做到优雅。您的代码在R和R studio下正常工作。我使用的是ggplot2_2.2.1和shinny_1.0.4。和你?您的第二个代码对我的R.Note注释部分不起作用。此解决方案不适用于某些用户。在主要答案中,此问题似乎是版本问题。随着版本更新到上述黑客不仅是不必要的,但也不工作。