plotly: обновление данных с помощью выпадающего списка

Я не уверен, возможно ли это, но вот что я хотел бы сделать. Я хотел бы обновить данные вplotly сюжет, выбрав из выпадающего меню.

В качестве простого примера, давайте предположим, что у меня есть фрейм данных

df <- data.frame(x = runif(200), y = runif(200), z = runif(200))

из которого я используюdf$x а такжеdf$y на графике рассеяния. Два сценария манипулирования данными, которые я хотел бы реализовать, используя выпадающий список

замещатьdf$y сdf$zСюжет только первыйn значенияdf$x а такжеdf$y

Я посмотрел на следующие два примера, которые легко воспроизвести:https://plot.ly/r/dropdowns/

Тем не менее, я понятия не имею, как передать информацию относительно данных, которые будут нанесены на график, на основе выпадающего списка. Для сценария 2, например Я попробовал это сargs = list("data", df[1:n,]) который не работал.

Для сценария 1 (единственный?) Путь (согласно примерам), кажется, скрывает / показывает следы соответственно. Это единственный путь для сценария 2?

Есть альтернативные идеи?

Обновление 1: Добавить воспроизводимый пример

Итак, вот пример, который дает то, что я хотел бы в сценарии 1.

require(plotly)
df <- data.frame(x = runif(200), y = runif(200), z = runif(200))
Sys.setenv("plotly_username"="xxx") #actual credentials replaced
Sys.setenv("plotly_api_key"="xxx") #actual credentials replaced

p <- plot_ly(df, x = df$x, y = df$y, mode = "markers", name = "A", visible = T) %>%
  add_trace(mode = "markers", y = df$z, name = "B", visible = T) %>%
  layout(
    title = "Drop down menus - Styling",
    xaxis = list(domain = c(0.1, 1)),
    yaxis = list(title = "y"),
    updatemenus = list(
      list(
        y = 0.7,
        buttons = list(
          list(method = "restyle",
               args = list("visible", list(TRUE, TRUE)),
               label = "Show All"),

          list(method = "restyle",
               args = list("visible", list(TRUE, FALSE)),
               label = "Show A"),

          list(method = "restyle",
               args = list("visible", list(FALSE, TRUE)),
               label = "Show B")))
    ))

plotly_POST(p)

Результат здесь:https://plot.ly/~spietrzyk/96/drop-down-menus-styling/ Это основано на примере изhttps://plot.ly/r/dropdowns/

Тем не менее, мне интересно, можно ли передать данные, которые будут нанесены на график, вместо того, чтобы вызвать изменения вvisible свойство отдельных следов.

Единственное, что я попробовал, было следующее:

p <- plot_ly(df, x = df$x, y = df$y, mode = "markers", name = "A", visible = T) %>%
  layout(
    title = "Drop down menus - Styling",
    xaxis = list(domain = c(0.1, 1)),
    yaxis = list(title = "y"),
    updatemenus = list(
      list(
        y = 0.7,
        buttons = list(
          list(method = "restyle",
               args = list("y", df$y),
               label = "Show A"),
          list(method = "restyle",
               args = list("y", df$z),
               label = "Show B")))
))

Результат здесь:https://plot.ly/~spietrzyk/98/drop-down-menus-styling/ Этот подход не может работать, так как данные изdf$z не размещен в сетке (https://plot.ly/~spietrzyk/99/).

Поэтому мне было интересно, есть ли в любом случае возможность манипулировать данными, которые будут отображаться на основе выпадающего списка, помимо нанесения всех трасс и переключенияvisible свойство по выпадающему выбору.

Ответы на вопрос(1)

Ваш ответ на вопрос