2015-04-27 7 views
9

Ich habe ein Problem, bei dem ggplot2 Daten außerhalb der in der Skala angegebenen Grenzwerte anzeigt. Siehe Beispiel unten. Warum sehe ich in der Grafik Punkte vor dem 01.01.2009 und nach dem 01.01.2015, wenn die Grenzwerte auf diese Werte gesetzt sind?ggplot2 Fehler: scale_x_date Anzeigen/Nicht-Löschen von Daten außerhalb der angegebenen Grenzen

library(ggplot2) 
library(scales) 
set.seed(100) 
z <- seq.Date(as.Date("2008/12/1"), as.Date("2015/12/14"), "day") 
l <- expand.grid(z, c("a", "b", "c")) 
w <- data.frame(x= l[, 1], t = l[, 2]) 
w$val <- runif(nrow(w)) 
ggplot(data=w, aes_string(x="x", y="val"))+scale_x_date(
    labels = date_format("%m/%d/%Y"), 
    limits= c(as.Date("2009/1/1"), as.Date("2015/1/1")), 
    breaks = "1 year")+ 
    geom_point(aes(color = t)) 

Ist es möglich, wie angegeben noch die Pausen/Skala zu verlassen, sondern nur die Daten außerhalb der Grenzen entfernen Sie die Daten mit Hilfe ggplot/ohne Vorfilterung? Das scheint mir ein Fehler zu sein. Die Dokumentation besagt, dass Filterdaten begrenzt werden.

resulting plot

Antwort

6

Dieses wie ein Bug mir sieht.

library(ggplot2) 
library(scales) 
set.seed(100) 
z <- seq.Date(as.Date("2008/12/1"), as.Date("2015/12/14"), "day") 
l <- expand.grid(z, c("a", "b", "c")) 
w <- data.frame(x= l[, 1], t = l[, 2]) 
w$val <- runif(nrow(w)) 
n <- as.Date("2009/1/1") 

Mit scale_x_continuous:

ggplot(w,aes(as.numeric(x),val))+geom_point()+ 
    scale_x_continuous(limits=c(as.numeric(n),NA))+ 
     geom_vline(xintercept=as.numeric(n),colour="red") 

enter image description here

Jetzt mit scale_x_date:

ggplot(w,aes(x,val))+geom_point()+ 
    scale_x_date(limits=c(n,NA))+ 
     geom_vline(xintercept=as.numeric(n),colour="red") 

enter image description here

Ich würde dies bei der ggplot issues list veröffentlichen, und in der Zwischenzeit mit subset() umgehen.

+0

Ich habe das getan. Danke mein Herr. https://github.com/hadley/ggplot2/issues/1090 – k13

Verwandte Themen