plotly / plotly/plotly.R

config modeBarButtonsToRemove fails if length is 1

Ouverte
#1,433 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

good-for-first-time-contribution
Langage dominant
R
Étoiles
2.7k
Forks
641
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

The plot silently fails to render and throws a javascript error when listing only 1 button for removal with config(modeBarButtonsToRemove = c(...))

# Basic failure
plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = c("hoverCompareCartesian"))

plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = c("zoom2d"))

# Fails even when button is superfluous ("zoom3d" not needed for a 2d plot)
plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = c("zoom3d"))

# Fails when passed as a scalar
plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = "hoverCompareCartesian")
// javscript error from browser
 Uncaught TypeError: x.config.modeBarButtonsToRemove.push is not a function
    at Object.renderValue (plotly.js:155)
    at exports.OutputBinding.shinyBinding.renderValue (htmlwidgets.js:516)
    at exports.OutputBinding.onValueChange (output_binding.js:16)
    at exports.OutputBinding.delegator.(:7541/anonymous function) [as onValueChange] (http://127.0.0.1:7541/htmlwidgets-1.3/htmlwidgets.js:112:23)
    at OutputBindingAdapter.onValueChange (output_binding_adapter.js:21)
    at ShinyApp.receiveOutput (shinyapp.js:332)
    at ShinyApp.<anonymous> (shinyapp.js:544)
    at ShinyApp._sendMessagesToHandlers (shinyapp.js:529)
    at ShinyApp.dispatchMessage (shinyapp.js:515)
    at WebSocket.c.onmessage (shinyapp.js:112)
renderValue @ plotly.js:155
shinyBinding.renderValue @ htmlwidgets.js:516
onValueChange @ output_binding.js:16
delegator.(anonymous function) @ htmlwidgets.js:112
onValueChange @ output_binding_adapter.js:21
receiveOutput @ shinyapp.js:332
(anonymous) @ shinyapp.js:544
_sendMessagesToHandlers @ shinyapp.js:529
dispatchMessage @ shinyapp.js:515
c.onmessage @ shinyapp.js:112

Adding a second, even irrelevant value, fixes the error.

# Remove 2 buttons
plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = c("hoverCompareCartesian","zoom2d"))

# zoom3d would not appear by default because this is a 2d plot, but adding it to the argument prevents the error
plot_ly(data = mtcars, x = ~mpg, y = ~wt) %>%
  config(modeBarButtonsToRemove = c("hoverCompareCartesian","zoom3d"))

I am using plotly 4.8.0

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez l’échec avec les exemples R en utilisant des valeurs de modeBarButtonsToRemove à un élément et scalaires. Commencez au point d’entrée renderValue indiqué dans la trace de la pile du navigateur, puis vérifiez que les configurations avec un seul bouton s’affichent sans erreur, tout en conservant le comportement existant avec plusieurs boutons.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, r
Domaine
data-visualization, frontend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
38/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.