gpt4 book ai didi

r - 将鼠标悬停在 Shiny 的 ggplot 上时的工具提示

转载 作者:行者123 更新时间:2023-12-03 11:53:02 26 4
gpt4 key购买 nike

我正在构建一个 Shiny 的应用程序。

我正在使用 ggplot 绘制图表。

当我将鼠标悬停在图形上的点上时,我想要一个工具提示,显示数据框中的一列(可自定义的工具提示)

你能建议最好的前进方式吗?

简单的应用程序:

# ui.R

shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
h4("TEst PLot")),
mainPanel(
plotOutput("plot1")
)
)
))

# server.R

library(ggplot2)
data(mtcars)

shinyServer(
function(input, output) {
output$plot1 <- renderPlot({
p <- ggplot(data=mtcars,aes(x=mpg,y=disp,color=factor(cyl)))
p <- p + geom_point()
print(p)
})
}
)

当我将鼠标悬停在点上时,我希望它显示 mtcars$wt

最佳答案

如果我正确理解了这个问题,这可以通过最近更新 ggplot2 和基础包的 Shiny 包来实现。使用 Winston Chang 和 Joe Cheng 的这个例子 http://shiny.rstudio.com/gallery/plot-interaction-basic.html ,我能够解决这个问题。 Hover 现在是 plotOutput() 的输入参数,因此它与 verbatimTextOutput 一起添加到 ui 以显示悬停点的 mtcars$wt。

在服务器中,我基本上制作了一个距离向量,用于计算从鼠标到图中任何点的距离,如果该距离小于 3(在此应用程序中有效),则它会显示距离鼠标最近的点的 mtcars$wt。要清楚 input$plot_hover 返回有关鼠标位置的信息列表,并且在此示例中仅从 input$plot_hover 中提取 x 和 y 元素。

library(ggplot2)
library(Cairo) # For nicer ggplot2 output when deployed on Linux

ui <- fluidPage(
fluidRow(
column(width = 12,
plotOutput("plot1", height = 350,hover = hoverOpts(id ="plot_hover"))
)
),
fluidRow(
column(width = 5,
verbatimTextOutput("hover_info")
)
)
)

server <- function(input, output) {


output$plot1 <- renderPlot({

ggplot(mtcars, aes(x=mpg,y=disp,color=factor(cyl))) + geom_point()

})

output$hover_info <- renderPrint({
if(!is.null(input$plot_hover)){
hover=input$plot_hover
dist=sqrt((hover$x-mtcars$mpg)^2+(hover$y-mtcars$disp)^2)
cat("Weight (lb/1000)\n")
if(min(dist) < 3)
mtcars$wt[which.min(dist)]
}


})
}
shinyApp(ui, server)

我希望这有帮助!

关于r - 将鼠标悬停在 Shiny 的 ggplot 上时的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27965931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com