2011-12-02 32 views
6

Tôi đã sử dụng ggplot để tạo các ô, và tôi luôn muốn bù lại các điểm dữ liệu theo chiều ngang để các thanh lỗi không trùng nhau. Tôi đã thấy rằng khi tôi sử dụng dữ liệu Ngày cho trục x của mình, tôi mất khả năng bù đắp các điểm dữ liệu của mình.R và ggplot- Thay đổi trục x thành Ngày xóa vị trí né tránh

DF=data.frame(Date=c("2006-09-01", "2007-09-01", "2008-09-01" ,"2009-09-01", "2010-01-01" ,"2011-01-01"),Count=c(1,2,3,4,5,6,2,4,6,8,10,12),Type=c('A','A','A','A','A','A','B','B','B','B','B','B')) 

Nếu tôi vẽ khung dữ liệu trên sử dụng ggplot như thế này, những điểm được bù đắp

dodge=position_dodge(.5) 
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge) 

Nhưng nếu tôi chỉ định dữ liệu ngày như ngày thực tế

DF$Date=as.Date(DF$Date) 
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge) 

Những điểm là không còn bù trừ, mặc dù tôi chỉ định chúng là

Tôi đã tránh sự cố này trong quá khứ bằng cách giữ dữ liệu ngày của tôi chỉ giới hạn ở "năm" và xử lý dữ liệu đó dưới dạng số. Nhưng bây giờ tôi cần phải bao gồm thông tin tháng (tôi bao gồm ngày trong ngày của tôi kể từ khi "as.Date được một chút sôi nổi nếu tôi không bao gồm nó).

Vì vậy, bất cứ ai có thể cho tôi biết nếu có một cách tôi có thể vẽ một chuỗi thời gian sử dụng ggplot mà sẽ cho phép tôi để bù đắp điểm dữ liệu của tôi và thanh lỗi.

Trả lời

9

trên thực tế các điểm đang lẩn tránh một chút.

Bạn cần phải ghi nhớ rằng khoảng cách giữa một năm là 365 ngày. position_dodge(0.5) di chuyển điểm theo (nửa ngày)/2. Vì vậy, vị trí sẽ di chuyển 0,5/2/365 trong khoảng thời gian một năm.

Nếu bạn chọn 'position_dodge (0,5 * 365), sau đó bạn sẽ nhận được những âm mưu như mong đợi:

DF <- data.frame(
    expand.grid(Date=c("2006-09-01", "2007-09-01", "2008-09-01" ,"2009-09-01"), 
    Type = c("A", "B")), 
    Count = 1:4) 
DF$Date2 <- as.Date(DF$Date) 

ggplot(data=DF,aes(x=Date2,y=Count,group=Type))+ geom_point(position = position_dodge(365*0.5)) 

enter image description here

+0

thiên tài! Cảm ơn vì câu trả lời – Vinterwoo

Các vấn đề liên quan