Pourquoi GGPLOT continue-t-il à me donner le premier jour du mois puis complotez une série chronologique.
Voici un échantillon de mon code:
library(ggplot2) library(dplyr) date <- as.Date(c("2008-01-31", "2008-02-29", "2008-03-31", "2008-04-30", "2008-05-31")) count <- sample(5) df <- data.frame(date = date, count = count) df %>% ggplot(aes(x = date, y = count))+ geom_line()+ scale_x_date(date_breaks = "1 month", date_labels = '%m/%d')
3 Réponses :
Suppression date_breaks code> et ajout
ruptures = df $ DATE code> semble donner le résultat souhaité.
df <- data.frame(date = as.POSIXct(date), count = count)
df %>%
ggplot(aes(x = date, y = count)) +
geom_line() +
scale_x_datetime(breaks = df$date, date_labels = '%m/%d')
vous et Vous pensez aux dates comme des étiquettes. Dans votre exemple, vous avez 5 choses que vous souhaitez tracer dans l'ordre, et ces étiquettes doivent apparaître sur l'axe. P> Les étiquettes de l'axe s'éteignent dans la plage de l'axe et n'ont rien à voir avec le variable. Il a placé les dates dans le bon endroit, mais a choisi les étiquettes d'axe lui-même. P> Cela vous laisse avec deux options p> 1. P> Si vous voulez Stick avec le type de données "Date", échangez l'option 2. p> Si vous voulez réellement que ce soit des étiquettes (par exemple, vous ne voulez pas mettre de points entre ces dates), considérez-vous Fabrication emballage ggplot code> pense aux dates différemment.
ggplot code> pense aux dates comme des dates. Si vous ne l'avez donné que les valeurs 2 et 5, comme ils sont numériques, il ajouterait tous les points entre eux, par exemple. 2,5, 3, 4, etc. Depuis que vous avez donné des dates, il colle toutes les dates entre aussi. P>
date_break code> avec juste
casse code> et spécifiez la plage de ce que vous voulez. par exemple p>
date code> un facteur et simplement tracer cela. p>
as.numérique code> autour de la date du
AES code> argument convertit le facteur en numérique (il convient donc à une ligne entre la ligne), nous devons alors simplement définir l'étiquette à ce que nous voulons que ce soit, ce que ce soit, qui nécessite la convertir à une date puis la formatage de la forme en mois / jour. p> p>
Peut-être que la solution la plus simple est simplement d'utiliser pauses code> au lieu de
date_breaks code>, en référence directement à votre colonne de dates dans la Dataframe.
df %>%
ggplot(aes(x = date, y = count))+
geom_line()+
scale_x_date(date_labels = '%m/%d', breaks = df$date)