我有一个很少数据的线图。有点像这样:
plot_ly(x = c( -2, 0, 1.5 ),y = c( -2, 1, 2.2),
type = 'scatter' ,mode = 'lines+markers') %>%
add_trace(x=c(-1,0.4,2.5),y=c(2, 0, -1),type='scatter',mode='lines+markers')
我想知道plotly
是否可以在一行中显示一行的所有hoverinfos。这样,例如当我点击图例中的“迹线1”时,我可以看到它在相应点旁边有点(-1,2),(0.4,0),(2.5,-1)。到目前为止找不到任何东西。
答案 0 :(得分:2)
您可以使用Plotly.Fx
触发悬停事件,并使用htmlwidgets
添加必要的Javascript代码。
Fx.hover
需要curveNumber
和curvePoint
(跟踪的 n -th)作为输入参数。如果要触发多个点的事件,则需要传递一组对象。
library("plotly")
library("htmlwidgets")
p <- plot_ly(x = c(-2, 0, 1.5 ),
y = c(-2, 1, 2.2),
type = 'scatter',
mode = 'lines+markers') %>%
add_trace(x = c(-1, 0.4, 2.5),
y = c(2, 0, -1),
type = 'scatter',
mode = 'lines+markers') %>%
layout(hovermode = 'closest')
javascript <- "
var myPlot = document.getElementsByClassName('plotly')[0];
myPlot.on('plotly_click', function(data) {
var hover = [];
for (var i = 0; i < data.points[0].data.x.length; i += 1) {
hover.push({curveNumber: data.points[0].curveNumber,
pointNumber: i});
}
Plotly.Fx.hover(myPlot, hover);
});"
p <- htmlwidgets::prependContent(p, onStaticRenderComplete(javascript), data = list(''))
p
注意:Plotly.Fx
将为deprecated。