从浏览器中以3d图形散点突出显示/查找数据点

时间:2017-08-17 14:45:08

标签: r plotly scatter

使用上一篇文章中的代码,我能够添加一个搜索栏,使用R在图表中突出显示散点图上的特定点,这在2维中效果很好。但是,我现在已经生成了具有相同数据的三维图,并且搜索栏的代码不再有效。是否可以在3维图中设置搜索栏,如果有,是否有办法更改以下代码以实现该目标?

p <- plot_ly(carsDf, x = ~Comp.1 , y = ~Comp.2, text = rownames(carsDf),
         mode = "markers", color = ~cluster_name, marker = list(size = 11), type = 'scatter', mode = 'markers')

p <- htmlwidgets::appendContent(p, htmltools::tags$input(id='inputText', value='Merc', ''), htmltools::tags$button(id='buttonSearch', 'Search'))
p <- htmlwidgets::appendContent(p, htmltools::tags$script(HTML(
'document.getElementById("buttonSearch").addEventListener("click", function()
{        
  var i = 0;
 var j = 0;
  var found = [];
  var myDiv = document.getElementsByClassName("js-plotly-plot")[0]
  var data = JSON.parse(document.querySelectorAll("script[type=\'application/json\']")[0].innerHTML);
  for (i = 0 ;i < data.x.data.length; i += 1) {
    for (j = 0; j < data.x.data[i].text.length; j += 1) {
      if (data.x.data[i].text[j].indexOf(document.getElementById("inputText").value) !== -1) {
        found.push({curveNumber: i, pointNumber: j});
      }
    }
  }
  Plotly.Fx.hover(myDiv, found);
}  
);'))) 
htmlwidgets::saveWidget(p, paste('pca', ".html", sep=""))
p                                                   

由于

0 个答案:

没有答案