禁用图例双击事件
Disable the legend double click event
如何在 R 中禁用 "Double click on legend to isolate one trace" 交互?我想要双击只有点击两下的效果
这是一个关于如何使用 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', () => 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")
您可以使用 htmlwidgets
将类似的 JavaScript 代码添加到您的 R 代码中。
- Select 你的主要情节 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
我认为 javascript 不再是必需的,如果是在 2018 年的话。您可以通过 [=12= 设置图例的 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 中禁用 "Double click on legend to isolate one trace" 交互?我想要双击只有点击两下的效果
这是一个关于如何使用 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', () => 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")
您可以使用 htmlwidgets
将类似的 JavaScript 代码添加到您的 R 代码中。
- Select 你的主要情节 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
我认为 javascript 不再是必需的,如果是在 2018 年的话。您可以通过 [=12= 设置图例的 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))