2011-12-07 25 views
7

Günlük olarak toplanan verilerle birlikte aşağıdaki veri kümesine sahibim. Aşağıdaki koduggplot2 içinde scale_x_datetime beklenmeyen davranışı

R> p <- ggplot(toydata, aes(x = date, y = coef, group = group)) 
R> pq <- p + geom_line(aes(colour = group)) + 
+ scale_x_datetime(major = "1 day", format = "%d-%b") 

kullanıyorum ggplot2 kullanarak çizmek çalıştığınızda,

R> toydata$date 
[1] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST" 
[3] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST" 
[5] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST" 
[7] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST" 

ve

R> format(toydata$date, "%d-%b") 
[1] "04-Nov" "05-Nov" "06-Nov" "07-Nov" "04-Nov" "05-Nov" "06-Nov" "07-Nov" 

Ancak:

R> toydata 
       date group coef 
1 2011-11-04 23:59:59  1 2.32 
2 2011-11-05 23:59:59  1 2.34 
3 2011-11-06 23:59:59  1 2.46 
4 2011-11-07 23:59:59  1 2.68 
5 2011-11-04 23:59:59  2 2.17 
6 2011-11-05 23:59:59  2 1.90 
7 2011-11-06 23:59:59  2 2.13 
8 2011-11-07 23:59:59  2 2.52 

Everythings iyi çalışıyor görünüyor Beklenmeyen bir sonuç elde edin:

enter image description here

Gördüğünüz gibi, Kasım, 6 yineleniyor. Bu soruna, x'in etiketlerini tarih olarak değil, dizeler halinde işleyerek halledebilirim, ancak bunun neden olduğunu merak ediyorum. Belli bir şey eksik miyim?

cevap

4

Sadece tz='EST' belirtin ve benim için çalışır. Varsayılan değer ne olursa olsun, gün ışığından yararlanma saati geçişi nedeniyle 6 Kasım'ı tekrar ediyor.

+0

Teşekkürler. İşe yarıyor. Sadece açıklığa kavuşturmak için: 'scale_x_datetime (major =" 1 gün ", format ="% d-% b ", tz =" EST ") – griverorz

+0

Bu, bildirilen bir hata olup olmadığını görmek için github'da kontrol edilmesine değer olabilir. ve eğer bildirmezseniz, sadece düzeltilebilir bir sorun olması durumunda. – joran

+0

Yea ... Tarih/saat konularını bildirmekten her zaman endişeliyim çünkü çok fazla nüans var ve ben uzman değilim. Bence buradaki bazı seviyeler, kendi yerel saat diliminizde görüntülenebilir, bu durumda tekrarlanan 06-Nov gerçekten doğru olabilir. 'Amerika/Los_Angeles' içerisindeyim. Eğer 24 saat arayla (muhtemelen kene için kullanılanlar) ve gün ışığından yararlanma geçişini geçtikten sonra bunları yerel saatimde biçimlendiren bir EST zamanları dizisiyle başladım. 06-Nov de tekrarlıyorum. ... –