2015-03-23 5 views
1

Я хочу, чтобы получить дату в оси х каждые 3 месяца, и, таким образом, использование date_breaks("3 month"), но периоды начинаются 1/03 и хотим, чтобы они 1/1, 1/4 и т.д. Это то, что я пытаюсь:ggplot: конфликт между date_breaks() и пределы

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")) 

Также пробовал:

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)) 

, но затем получить месяцев с аббревиатурами и нуждаются номера (выглядит как xlim() отменяет предыдущую scale_x_datetime())

ответ

1

Должно работать:

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'))