2015-04-27 18 views
9

ggplot2'un ölçekte belirtilen sınırların dışında verileri görüntülediği bir sorun yaşıyorum. Aşağıdaki örneğe bakın. Limitlerin bu değerlere ayarlanmış olması durumunda, neden 2009/01/01 öncesi ve 2015/01/01 tarihinden sonra puanları görüyorum?ggplot2 Hata: scale_x_date Belirtilen Sınırları Dışında Verileri Gösterme/Kaldırma

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

o belirtildiği gibi hala sonları/ölçek terk ama sadece verileri öncesi filtreleme olmadan/ggplot kullanarak sınırları dışına verileri kaldırmak mümkün mü? Bu benim için bir hata gibi görünüyor. Belge, filtre verilerini sınırlar.

resulting plot

cevap

6

Bu benim için bir böcek gibi görünüyor. scale_x_continuous ile

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

:

Şimdi
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

scale_x_date ile:

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

Bunu ggplot issues list numaralı telefondan yayınlayabilirim ve bu arada subset() ile çalışıyorum.

+0

Bunu yaptım. Teşekkürler bayım. https://github.com/hadley/ggplot2/issues/1090 – k13

İlgili konular