嗨,我有一个闪亮的应用程序,可以帮助用户可视化来自自动DNA测序仪的电泳图(基本上是光谱)。我希望用户能够将鼠标悬停在峰上并找出峰离开仪器的时间。我还希望能够通过在一个光谱上绘制另一个光谱来比较多个电泳图。
如果绘制单个光谱,则可以使用ui中对plotOutput()提供的'hover'选项来恢复鼠标的x位置。如果我使用基本图形和par(mfrow = c(n,1))(其中n是光谱数)叠加图,则结果是不可预测的。基本上,x位置可在部分绘图区域恢复,但不能在整个区域恢复。
作为最后的一条信息,我几年前编写了这个应用程序,并且一直按预期工作,直到我将R和闪亮的软件包更新为相当新的版本:(R 3.4.4;闪亮的1.2.0)。
我包含了一个app.R文件,该文件使用直方图和忠实的数据在一个简单的案例中重现了此问题,并展示了我一直在采用的方法。无论我将hoverOpts中的'clip'设置为TRUE还是FALSE,我都会得到相同的行为。
感谢您的帮助 艾伦
library(shiny)
ui = fluidPage(
titlePanel("Mulitpanel hover: Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
sliderInput("bins","Number of bins:",min = 1,max = 50,value = 30)
),
mainPanel(
textOutput("xpos"),
plotOutput("distPlot",hover=hoverOpts(id="plot_hover",clip=TRUE))
)
)
)
server = function(input, output) {
output$xpos = renderText({paste("x coord:",input$plot_hover$x)})
output$distPlot = renderPlot({
x = faithful[, 2]
bins = seq(min(x), max(x), length.out = input$bins + 1)
par(mfrow=c(2,1))
hist(x, breaks = bins, col = 'darkgray', border = 'white')
hist(x, breaks = bins, col = 'orange', border = 'white')
})
}
shinyApp(ui = ui, server = server)