2015-03-23 1 views
1

Je veux obtenir les dates dans l'axe x tous les 3 mois et donc utilisation date_breaks("3 month"), mais les périodes d'avance sur 1/03 et veux qu'ils aillent 1/1, 1/4, etc. Voici ce que j'essaie:ggplot: conflit entre date_breaks() et les limites

datos <- data.frame(fecha= date_decimal(seq(2013.0,2013.99,by=0.01)),val=runif(100,1,2)) 
fini <- ymd("20130101") 
ffin <- ymd("20131231") 
ggplot(data=datos) + geom_point(aes(x=fecha,y=val)) + 
    scale_x_datetime(breaks = date_breaks("3 month"), 
        limits=c(fini,ffin), 
        labels = date_format("%d-%m-%Y")) 

essayé aussi:

ggplot(data=datos) + geom_point(aes(x=fecha,y=val)) + 
scale_x_datetime(breaks = date_breaks("3 month"), 
       labels = date_format("%d-%m-%Y")) + 
xlim(c(fini,ffin)) 

mais obtenir les mois avec les acronymes et besoin de chiffres (qui ressemble à la XLIM() annule la scale_x_datetime précédente())

Répondre

1

Cela devrait fonctionner:

library(ggplot2) 
library(scales) 
library(lubridate) 
datos <- data.frame(fecha= date_decimal(seq(2013.0,2013.99,by=0.01)),val=runif(100,1,2)) 
fini <- ymd("20130101") 
ffin <- ymd("20140101") 

datebreaks <- seq(as.Date(fini), as.Date(ffin), by="3 month") 

ggplot(data=datos) + 
    geom_point(aes(x = as.Date(fecha), y = val)) + 
    scale_x_date(breaks = datebreaks, 
       limits = c(as.Date(fini), as.Date(ffin)), 
       labels = date_format('%d-%m-%Y'))