Возвращает точки данных, выбранные на графике рассеяния - PullRequest
0 голосов
/ 08 июня 2018

Я создал сюжетную диаграмму рассеяния из ggplot2, используя ggplotly.

Я хотел бы получить таблицу выбранных / увеличенных точек данных, но я не могу найти способ сделать это.

library(ggplot2)
library(plotly)

p <- ggplotly(plot.rel.kinship)
htmlwidgets::saveWidget(as_widget(p), "scatterplot.html")

Похоже, что аналогичный вопрос без ответа на форуме сюжета:

https://community.plot.ly/t/get-datapoints-in-currently-zoomed-view/259

Этот вопрос также, похоже, связан:

Использование Plotly с DT через перекрестные помехи в Shiny

Спасибо за вашу помощь.

enter image description here

ОБНОВЛЕНИЕ:

library(crosstalk)

a <- datatable(king.kin.subset)

kinship.plotly.table <- bscols(widths = c(6, 4), p, a)

htmltools::save_html(kinship.plotly.table, "scatterplot_table.html")

Все еще не удается обновить DataTable на основе выбора точек на диаграмме рассеяния.

enter image description here

1 Ответ

0 голосов
/ 08 июня 2018

В документации plotly говорится, что можно связать представления без shiny, используя crosstalk.Вы не предоставили воспроизводимый пример, поэтому вот пример, использующий набор данных iris.Вы можете попробовать:

library(plotly)
library(crosstalk)
library(DT)


sd <- SharedData$new(iris)

a <- plot_ly(sd, x = ~Sepal.Width, y = ~Petal.Width) %>% 
  add_markers(alpha = 0.5) %>%
  highlight("plotly_selected", dynamic = TRUE)


options(persistent = TRUE)

p <- datatable(sd)

bscols(widths = c(6, 4), a, p)

plotly имеет в версии для разработки table, но я не мог понять, как использовать его с примером выше.DT было проще, но вы могли бы заставить его работать.Надеюсь, это поможет.

enter image description here

РЕДАКТИРОВАТЬ: С ggplotly, вы можете попробовать это:

d <- highlight_unit(iris)
a <- ggplotly(ggplot(data = d, aes(x = Sepal.Width, y = Petal.Width)) + geom_point()) %>%
  highlight("plotly_selected", dynamic = TRUE)

options(persistent = TRUE)

p <- datatable(d)

bscols(widths = c(6, 4), a, p)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...