每次用户在onRender htmlwidgets中交互时删除旧跟踪并添加新跟踪
我的目标是使用R包htmlwidgets中的onRender()函数绘制一个绘图,用户可以在其中单击一个点并绘制一条粗的灰色半透明线。我有它工作的关键,如下面的代码所示每次用户在onRender htmlwidgets中交互时删除旧跟踪并添加新跟踪,r,plotly,htmlwidgets,onrender,R,Plotly,Htmlwidgets,Onrender,我的目标是使用R包htmlwidgets中的onRender()函数绘制一个绘图,用户可以在其中单击一个点并绘制一条粗的灰色半透明线。我有它工作的关键,如下面的代码所示 library(plotly) library(broom) library(htmlwidgets) dat <- mtcars dat$mpg <- dat$mpg * 10 p <- ggplot(data = dat, aes(x=disp,y=mpg)) + geom_point(size=0.5
library(plotly)
library(broom)
library(htmlwidgets)
dat <- mtcars
dat$mpg <- dat$mpg * 10
p <- ggplot(data = dat, aes(x=disp,y=mpg)) + geom_point(size=0.5)
ggplotly(p) %>%
onRender("
function(el, x, data) {
el.on('plotly_click', function(e) {
//Plotly.deleteTraces(el.id, trace1);
var trace1 = {
x: [100, 400],
y: [100, 400],
mode: 'lines',
line: {
color: 'gray',
width: 100
},
opacity: 0.5
}
//Plotly.deleteTraces(el.id, trace1);
Plotly.addTraces(el.id, trace1);
})
}
", data = dat)
library(plotly)
图书馆(扫帚)
库(htmlwidgets)
dat要删除的跟踪对象存储在x.data[1]
中。这应该起作用:
ggplotly(p) %>%
onRender("function(el, x, data) {
el.on('plotly_click', function(e) {
if(x.data[1]) Plotly.deleteTraces(el.id, 1);
var trace1 = {
x: [100, 400],
y: [100, 400],
mode: 'lines',
line: {
color: 'gray',
width: 100
},
opacity: 0.5
}
Plotly.addTraces(el.id, trace1);
})
}", data = dat)
非常感谢。我永远不会看x物体。我担心我的知识不足,甚至无法查看,这可能会导致我在使用onRender()时遇到问题。你能解释一下你是如何知道跟踪被添加到x对象的吗?我使用的是ChromeDeveloperTools(CDT),我通常只是事先键入console.log(Object),以便在CDT中查看对象。除了在许多对象上运行console.log()之外,您还可以使用其他方法来更好地了解跟踪的工作方式吗?