Но я думаю, что это настолько хорошо, насколько это возможно, в конце концов, это библиотека на основе браузера, а не отдельная программа.
иже упрощает мою настоящую цель. Тем не менее, у меня есть фоновое изображение, на рисование которого уходит много времени (в приведенном ниже примере это просто диаграмма рассеяния с 32 значениями набора данных mtcars). Пользователи могут щелкать определенные точки на моем фоновом изображении, и это приведет к созданию новых точек. Моя цель состоит в том, чтобы эти новые точки просто перерисовывались на верхнем слое, в то время как график рассеяния фонового изображения не нужно перерисовывать для экономии времени и вычислений.
Мой MWE выглядит следующим образом:
library(plotly)
library(htmlwidgets)
g <- ggplot(mtcars, aes(x=mpg, y=cyl)) + geom_point()
gP <- ggplotly(g)
gP %>% onRender("
function(el, x) {
myGraph = document.getElementById(el.id);
el.on('plotly_click', function(e) {
console.log(e)
console.log(e.points[0].x)
var trace1 = {
x: [e.points[0].x-.3, e.points[0].x-.3, e.points[0].x+.3, e.points[0].x+.3],
y: [e.points[0].y-.3, e.points[0].y+.3, e.points[0].y-.3, e.points[0].y+.3],
type: 'scatter',
fillColor : 'red',
size: 20
};
Plotly.addTraces(el.id, trace1);
})}
")
Когда пользователь нажимает на любую из 32 черных точек, вокруг окрашенной черной точки рисуются четыре цветные красные точки. Это в основном работает, и если вы нажмете на любую из 32 черных точек данных, вы должны увидеть четыре цветные точки, нарисованные вокруг нее. Тем не менее, мне остается несколько вопросов:
1) Как я могу улучшить это, чтобы четыре цветные точки не были соединены линиями?
2) Как сделать так, чтобы размер и fillColor действительно работали? Когда я изменяю их значения, я не вижу их влияния.
3) Это разумный синтаксис, чтобы сделать интерактивность и рисование как можно быстрее? Я почти уверен, что фоновое изображение не перерисовывается эффективным образом, но хотел бы услышать подтверждение об этом, поскольку я новичок в этом синтаксисе. Если бы я добавил сотни новых точек на верхний слой, это все равно было бы эффективно? Если нет, я был бы признателен за рекомендации по улучшению синтаксиса.
Спасибо.