2017-09-13 10 views
0

私は非常に小さなデータを持つ線図を持っています。このようなビットは:Plotly(r)は、クリック時の線のすべてのホバーインフォを表示します。

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)があることがわかります。これまで何も見つかりませんでした。

更新:私はいくつかのコーディングエラーを作成して以来、私はリンクされたポストで陰謀で達成したいもののアプリケーションを見ることができます。私の考えはshinyで実現しました。

答えて

1

Plotly.Fxでホバーイベントをトリガーし、htmlwidgetsを使用して必要なJavascriptコードを追加できます。

Fx.hoverは、入力パラメータとしてcurveNumbercurvePoint(あなたのトレースのN番目)を必要とします。複数のポイントのイベントをトリガーする場合は、オブジェクトの配列を渡す必要があります。

enter image description here

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.Fxdeprecatedになります。

+1

基本的には、この機能が維持されるかどうかを確認するために次のプロットを待っています。現在のリリース(plotly.jsの場合は1.3.0、Rパッケージの場合は4.7.1)では他の解決策はありませんので、私はあなたの答えを受け入れます。私は、新しいリリースがリリースされたときに、ユーザーからコメントをいただきたいと思います。 – 5th

関連する問題