2013-04-05 89 views
18

có ai biết cách xoay các dấu trục ở định dạng ngày với ggplot2 không? Tôi muốn nhận nhãn với "Ngày tháng" (ví dụ: "1985-5") với góc 45 ° trên trục x.nhãn xoay ở định dạng ngày

mẫu dữ liệu:

Station Date Ptot 
A 1980-02 16 
A 1980-03 19 
A 1980-04 40 
A 1980-05 48 
A 1980-06 NA 
A 1980-07 18.5 
A 1980-08 24.6 
B 1980-07 50.8 
B 1980-08 28.9 
B 1980-09 32.9 
B 1980-10 47.9 
B 1980-11 16.3 

Tôi cố gắng này:

library(ggplot2) 
library(scales) 

plot <- ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+ 
    geom_line()+ 
    facet_grid(Station~.)+ 
    scale_x_date(breaks = "year", labels=date_format("%Y-%m"))+ 
    xlab("Year")+ 
    ylab("Prec (mm)")+ 
    labs(colour = "Station")+ 
    theme(axis.text.x = element_text(angle = 45, hjust = 1))+ 
    theme_bw() 

plot 

nhưng nó không hoạt động.

Cảm ơn!

+1

bạn sẽ phải cung cấp một ví dụ tái sản xuất tốt hơn với các dữ liệu và mã hoàn chỉnh của bạn. – Arun

+0

OK, tôi chỉ cải thiện chi tiết trong câu hỏi ... – user2165907

+0

Kiểm tra chỉnh sửa @Didzis 'nơi anh ấy giải thích sự cố với cột 'Ngày' của bạn. – Arun

Trả lời

29

Trước tiên, bạn nên tạo cột Date làm ngày. Vì nó không có ngày được cung cấp, bạn nên thêm ví dụ 01 vào mỗi ngày và chuyển đổi chúng.

data$Date<-as.Date(paste(data$Date,"-01",sep=""),format="%Y-%m-%d") 

Để có được vị trí chính xác của nhãn dưới trục x bạn nên thiết lập không chỉ angle= mà còn hjust=1 để đảm bảo rằng kết thúc của nhãn được đặt dưới dấu tick. Ngoài ra theme_bw() nên được đặt trước khi đặc tả chủ đề của văn bản trục.

ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+ 
    geom_line()+ 
    facet_grid(Station~.)+ 
    scale_x_date(breaks = "month", labels=date_format("%Y-%m"))+ 
    xlab("Year")+ 
    ylab("Prec (mm)")+theme_bw()+ 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

enter image description here

+0

Tôi vừa mới viết nó. – Arun

+0

Cảm ơn! Tôi không đề cập đến việc tôi đã thực hiện chuyển đổi ngày của cột "Ngày" của mình ... Tôi vẫn phải học cách tối ưu hóa việc sử dụng diễn đàn này. Vấn đề của tôi là vị trí của theme_bw() – user2165907

+1

@ user2165907 theme_bw() cũng thiết lập các tham số cho trục.text, vì vậy nó phải được đặt trước các tham số của bạn. –

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