Je souhaite créer un menu déroulant à l'aide des menus de mise à jour de R Plotly pour pouvoir modifier l'image source dans un tracé.
Voici ce que j'ai fait jusqu'à présent, sans succès:
library(plotly)
library(magrittr)
img1 <- "https://www.gravatar.com/avatar/dc04a25fbabbffc1f1b7c6a3362bfae4?s=256&d=identicon&r=PG"
img2 <- "https://www.gravatar.com/avatar/bc680ed8d2555accacebc0fe2d8c9691?s=256&d=identicon&r=PG"
plot_ly(x = 1:5, y = 1:5, type = 'scatter', mode = 'markers') %>%
layout(
images = list(
list(
source = img1,
xref = "x",
yref = "y",
x = 3,
y = 4,
sizex = 2,
sizey = 2
)
),
updatemenus = list(
list(
y = 1,
buttons = list(
list(method = "restyle",
args = list(list(images = list(list(source = img1)))),
label = "img1"),
list(method = "restyle",
args = list(list(images = list(list(source = img2)))),
label = "img2")
)
)
)
)
Qu'est-ce que je rate?
Solution du problème
Il y a probablement plus d'une façon de faire cela, mais cela fonctionne. Pour les mises à jour de mise en page, vous allez généralement utiliser la méthode relayout
. Vous devez également fournir toutes les informations (c'est-à-dire, x
, y
, xref
etc.).
library(plotly)
img1 <- "https://www.gravatar.com/avatar/dc04a25fbabbffc1f1b7c6a3362bfae4?s=256&d=identicon&r=PG"
img2 <- "https://www.gravatar.com/avatar/bc680ed8d2555accacebc0fe2d8c9691?s=256&d=identicon&r=PG"
imgOne = list( # create image expectations
list(
source = img1,
xref = "x", yref = "y",
x = 3, y = 4,
sizex = 2, sizey = 2))
imgTwo = list( # create image expectations
list(
source = img2,
xref = "x", yref = "y",
x = 3, y = 4,
sizex = 2, sizey = 2))
plot_ly(x = 1:5, y = 1:5, type = 'scatter', mode = 'markers') %>%
layout(
images = imgOne,
updatemenus = list(
list(
y = 1,
active = 0,
buttons = list(
list(label = "None",
method = "relayout",
args = list(list(images = c()))),
list(label = "img1",
method = "relayout",
args = list(list(images = imgOne))),
list(label = "img2",
method = "relayout",
args = list(list(images = imgTwo)))
))))
Il existe quelques method
options pour updatemenus
. Vous pouvez en savoir plus à ce sujet ici.
Aucun commentaire:
Enregistrer un commentaire