plotly: Aktualisieren von Daten mit Dropdown-Auswahl

Ich bin mir nicht sicher, ob dies möglich ist, aber hier ist, was ich tun möchte. Ich möchte die Daten in einem @ aktualisierplotly Plotten durch Auswahl aus einem Dropdown-Menü.

Als einfaches Beispiel nehmen wir an, ich habe einen Datenrahmen

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

on dem ich @ benutdf$x unddf$y in einem Streudiagramm. Zwei Szenarien der Datenmanipulation möchte ich mit einem Dropdown erreichen:

Replacedf$y mitdf$z Nur das erste @ eintragn Werte vondf$x unddf$y

Ich habe mir die folgenden zwei Beispiele angesehen, die ich leicht reproduzieren kann:https: //plot.ly/r/dropdowns

Ich habe jedoch keine Ahnung, wie ich die Informationen zu den zu plottenden Daten basierend auf der Dropdown-Auswahl weitergeben soll. Für Szenario 2, z. Ich habe es mit @ versucargs = list("data", df[1:n,]) was nicht funktioniert hat.

Für Szenario 1 scheint der (einzige?) Weg (gemäß den Beispielen) die Spuren zu verbergen bzw. zu zeigen. Ist das auch der einzige Weg für Szenario 2?

Alle alternativen Ideen?

Update 1: Reproduzierbares Beispiel hinzufügen

So hier ist ein Beispiel, das erreicht, was ich in Szenario 1 möchte.

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)

Ergebnis hier:https: //plot.ly/~spietrzyk/96/drop-down-menus-styling Dies basiert auf dem Beispiel vonhttps: //plot.ly/r/dropdowns

Ich frage mich jedoch, ob man die zu zeichnenden Daten übergeben kann, anstatt Änderungen am @ auszulösevisible eigenschaft einzelner spuren.

Das eine, was ich versucht habe, war das Folgende:

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")))
))

Ergebnis hier:https: //plot.ly/~spietrzyk/98/drop-down-menus-styling Dieser Ansatz kann nicht funktionieren, da die Daten vondf$z wird nicht in das Raster geschrieben https: //plot.ly/~spietrzyk/99).

Also habe ich mich gefragt, ob es sowieso möglich ist, die zu plottenden Daten auf der Grundlage der Dropdown-Auswahl zu manipulieren, über das Plotten aller Spuren hinaus und dann das @ -Schaltevisible Eigenschaft durch Dropdown-Auswahl.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage