plotly / plotly/plotly.R

legendrank (bar chart example)

Aperta
#2,233 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
R
Stelle
2.7k
Fork
641
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

This bug report concerns R plotly 4.10.1.
I was going to file a report regarding a more complex composite chart; involving bars and lines; as I noticed when there was an NA(or NaN) value to plot against the Y axis , the legend orders got scrambled. I was able to directly address this shortcoming in my own code by na.omit() on my input dataset. However , in the course of trying to simplify my code down to be more minimal for this reprex, I encountered a more basic issue of the legendrank seemingly not being respected

library(tidyverse)
library(plotly)
(tot_df <- structure(list(
  rank = structure(c(
    1L, 1L, 1L, 1L, 2L, 2L, 2L,
    2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L
  ), levels = c(
    "1", "2", "3",
    "4"
  ), class = "factor"), value = c(
    1, 0.316227766016838, 2, 0.447213595499958,
    3, 0.547722557505166, 4, 0.632455532033676, 5, 0.707106781186548,
    3, 0.547722557505166, 2, 0.447213595499958, 1, 0.316227766016838
  ), name = c(
    "stat1", "stat_2", "stat1", "stat_2", "stat1", "stat_2",
    "stat1", "stat_2", "stat1", "stat_2", "stat1", "stat_2", "stat1",
    "stat_2", "stat1", "stat_2"
  ), `Display name` = structure(c(
    1L,
    1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L
  ), levels = c(
    "Reference",
    "Current"
  ), class = "factor"), series_name_text = structure(c(
    1L,
    2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L
  ), levels = c(
    "Reference stat1",
    "Reference stat_2", "Current stat1", "Current stat_2"
  ), class = "factor"),
  my_legend_rank = c(
    1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
    3L, 4L, 1L, 2L, 3L, 4L
  )
), row.names = c(NA, -16L), class = c(
  "tbl_df",
  "tbl", "data.frame"
))
)


px <- plot_ly(
  data = tot_df,
  width = 800,
  height = 600,
  x = ~rank,
  y = ~value,
  name = ~series_name_text,
  legendrank = ~my_legend_rank,
  color = ~`Display name`,
  colors = c("green", "blue"),
  textposition = "none",
  type = "bar",
  opacity = .5,
  yaxis = "y"
) |> layout(legend = list(
  orientation = "h",
  xanchor = "center",
  yanchor = "bottom",
  y = -0.3,
  x = 0.5
))

# table(tot_df$series_name_text,tot_df$my_legend_rank
#                  1 2 3 4
# Reference stat1  4 0 0 0
# Reference stat_2 0 4 0 0
# Current stat1    0 0 4 0
# Current stat_2   0 0 0 4

plotly_json(px)

image

It seems to me that based on legendrank 'Reference stat1 should be the first i.e. leftmost trace name observed within the legend box, and this isnt the case, the first seen is Current stat1, that should be in 3rd position...)
Is there a gotcha here ? some incorrect setup ? something that invalidates the use of legendrank ?

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Esegui il reprex R fornito e ispeziona plotly_json(px), concentrandoti su come viene rappresentato il mapping di legendrank per le trace a barre. Confronta l’ordine della legenda generato con i rank richiesti; l’attività è completata se le trace appaiono nell’ordine dei rank oppure se l’issue è spiegata e coperta da un test di regressione appropriato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
plotly, r
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.