Problems with barcharts with barmode='overlay' and Date objects
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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- 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