plotly / plotly/plotly.R

Problems with barcharts with barmode='overlay' and Date objects

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

Personne n'a encore pris cette issue.

Langage dominant
R
Étoiles
2.7k
Forks
641
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I need to plot several barcharts with Date objects on the x-axis with barmode = 'overlay' for a whole year. When there are enough values to plot, everything works fine, as I would like the bars to have equal widths along all traces.

But when one trace has few elements, the width of those traces are expanded.
And when one trace only has 1 value, it is not shown at all.

I could overcome those problems by creating fictional Dates with 0 y-values for the rest of the year, but I was hoping there is a better way of solving that.

The variable n in the example can be used to determine the amount of bars for the problematic
trace.

library(plotly)
n = 3

## All days of 2019 ###############
Days2019 <- data.frame(
  date = seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by = "days")
)

## Sample n Days of 2019 ###############
df <- data.frame(
  date = sort(sample(Days2019$date, size = n, replace = F)),
  val = sample(1:100, n, replace = T)
)

## Merge fictional 0 y-Values #################
# df = merge(df, Days2019, by="date", all=T)
# df[is.na(df$val),]$val=0

## Sample 30 Days of 2019 ###############
holiday1 <- data.frame(
  date = sort(sample(Days2019$date, size = 30, replace = F))
)

## Plot Plotly ###############
maxY = max(df$val)
plot_ly() %>%
  add_trace(data = holiday1, x = ~date, y = maxY, marker = list(color = "gray"), type="bar", name="Holidays") %>% 
  add_trace(data = df, x = ~date, y = ~val, marker = list(color = "red"), type="bar", name="Values") %>% 
  plotly::layout(autosize = F,
                 barmode = 'overlay',
                 bargap = 0.05,
                 xaxis = list(
                   type = "date",
                   range = c(as.Date("2019-01-01")-1,
                             as.Date("2019-12-31")+1),
                   autorange = FALSE,
                   tickmode = "auto",
                   nticks = 14L,
                   automargin = F)
  )

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

Commencez par exécuter l’exemple R fourni avec n=3, puis faites varier n et comparez la largeur des barres ainsi que leur visibilité en mode overlay entre les deux traces. Suivez la gestion des barres et de Date dans plotly.R utilisée par cet exemple et considérez l’issue comme terminée lorsque les traces Date clairsemées conservent des largeurs appropriées et qu’une valeur unique est rendue sans nécessiter de dates fictives de valeur zéro.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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