我正在构建一个闪亮的应用程序。
我正在使用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
4条答案
按热度按时间mqkwyuun1#
如果我正确理解了这个问题,这可以通过最近更新ggplot 2和基本包的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返回了一个关于鼠标位置的信息列表,在这个例子中,只有x和y元素是从input$plot_hover中提取的。
希望这对你有帮助!
j7dteeu82#
您还可以使用一点JQuery和条件
renderUI
来在指针附近显示自定义工具提示。已编辑:
在这篇文章之后,我搜索了互联网,看看是否可以做得更好,并发现this精彩的ggplot自定义工具提示。我相信这是最好不过的了。
7qhs6swi3#
使用
plotly
,您可以将您的ggplot
转换为其自身的交互式版本。只需在ggplot
对象上调用函数ggplotly
:要定制工具提示中显示的内容,请查看here。
4c8rllxm4#
我和我的同事一起发布了一个名为GGTips的软件包(它不在CRAN上),它可以做到这一点,在图上添加工具提示。我们创建了自己的解决方案,因为我们在使用与ggplot2不是100%兼容的plotly重新创建复杂的图时遇到了麻烦。Git repo有一个在线演示的链接。