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
свойство по выпадающему выбору.