【问题标题】:Disable the legend double click event禁用图例双击事件
【发布时间】:2019-01-23 10:28:16
【问题描述】:

如何在 R 中禁用“双击图例以隔离一条迹线”交互?我要双击才有两下的效果。

这是一个关于如何使用 Javascript 执行此操作的示例:

Plotly.newPlot('graph', [{
  y: [1, 2, 1]
}, {
  y: [3, 4, 2]
}])
.then(gd => {
  gd.on('plotly_legenddoubleclick', () => false)
})
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<body>
  <div id="graph"></div>
</body>

它使用gd.on('plotly_legenddoubleclick', () =&gt; false)。 我不知道如何将其翻译成 R。

R 中的示例:

library(plotly)

plot_ly() %>%
  add_trace(y = c(1,2,1), x = c(1,2,3), mode= "graph")    %>%
  add_trace(y = c(3,4,2), x = c(1,2,3), mode= "graph")

【问题讨论】:

    标签: r plotly legend r-plotly


    【解决方案1】:

    如果是在 2018 年,我认为不再需要 javascript。您可以通过 layout() 设置图例的 itemdoubleclick 属性直接在 R 中实现此结果:

    library(plotly)
    
    plot_ly() %>%
      add_trace(y = c(1,2,1), x = c(1,2,3), mode= "graph") %>%
      add_trace(y = c(3,4,2), x = c(1,2,3), mode= "graph") %>%
      layout(legend = list(itemdoubleclick = FALSE))
    

    【讨论】:

    • 谢谢!这些天不使用 R,但如果有人确认,我会接受这个答案。
    【解决方案2】:

    您可以使用 htmlwidgets 将类似的 JavaScript 代码添加到您的 R 代码中。

    • 选择您的主要 Plotly DOM 对象
    • 覆盖事件监听器
    • 将其添加到您的 R Plotly 对象中

    注意事项:

    • 通过devtools::install_github("ropensci/plotly")将 Plotly 更新到最新的开发者版本
    • 如果它在 RStudio 中不起作用,则需要将图形导出为 HTML

      library(plotly)
      library(htmlwidgets)
      
      p <- plot_ly() %>%
        add_trace(y = c(1,2,1), x = c(1,2,3), mode= "graph", type='scatter')    %>%
        add_trace(y = c(3,4,2), x = c(1,2,3), mode= "graph", type='scatter')
      
      javascript <- "var myPlot = document.getElementsByClassName('plotly')[0];
      myPlot.on('plotly_legenddoubleclick', function(d, i) {return false});"
      p <- htmlwidgets::prependContent(p, htmlwidgets::onStaticRenderComplete(javascript), data=list(''))
      p
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多