2013-01-18 34 views
5

Tôi thực sự cần giúp đỡ ở đây vì tôi vượt xa sự mất mát.ggplot2 + Cấu trúc ngày sử dụng thang tỷ lệ X

Tôi đang cố gắng tạo biểu đồ dạng đường thể hiện hiệu suất của một số nhóm trong một năm. Tôi chia năm thành các khu: 1/1/2012, 4/1/12. 8/1/12. 12/1/12 và tải khung dữ liệu csv vào R.

 Month    Team Position 
1 1/1/12  South Africa  56 
2 1/1/12    Angola  85 
3 1/1/12   Morocco  61 
4 1/1/12 Cape Verde Islands  58 
5 4/1/12  South Africa  71 
6 4/1/12    Angola  78 
7 4/1/12   Morocco  62 
8 4/1/12 Cape Verde Islands  76 
9 8/1/12  South Africa  67 
10 8/1/12    Angola  85 
11 8/1/12   Morocco  68 
12 8/1/12 Cape Verde Islands  78 
13 12/1/12  South Africa  87 
14 12/1/12    Angola  84 
15 12/1/12   Morocco  72 
16 12/1/12 Cape Verde Islands  69 

Khi tôi thử sử dụng ggplot2 để tạo biểu đồ quý IV 12/1/12 không thể giải thích đến vị trí thứ hai.

ggplot(groupA, aes(x=Month, y=Position, colour=Team, group=Team)) + geom_line() 

sau đó tôi đặt âm mưu này thành một GA biến để cố gắng sử dụng scale_x để định dạng ngày:

GA + scale_x_date(labels = date_format("%m/%d")) 

Nhưng tôi tiếp tục nhận được lỗi này:

Error in structure(list(call = match.call(), aesthetics = aesthetics, : 

thể không tìm thấy hàm "date_format"

Và nếu tôi chạy mã này:

GA + scale_x_date() 

tôi nhận được lỗi này:

Error: Invalid input: date_trans works with objects of class Date only 

Tôi đang sử dụng Mac OS X chạy R 2.15.2

Xin vui lòng giúp.

+0

Xin lỗi. Làm thế nào để làm điều đó? – Siya

+0

@Syia và như một hành động lịch sự, bạn có thể upvote, đặc biệt khi bạn chấp nhận giải pháp ... Điều này sẽ khuyến khích mọi người giúp bạn lần sau ... – agstudy

Trả lời

6

Đó là vì, df$Month, (giả sử data.framedf), là một mức độ theo thứ tự này là factor.

> levels(df$Month) 
# [1] "1/1/12" "12/1/12" "4/1/12" "8/1/12" 

Giải pháp là sắp xếp lại các mức của yếu tố của bạn.

df$Month <- factor(df$Month, levels=df$Month[!duplicated(df$Month)]) 
> levels(df$Month) 
# [1] "1/1/12" "4/1/12" "8/1/12" "12/1/12" 

ggplot2_factor_levels

Edit: giải pháp thay thế sử dụng strptime

# You could convert Month first: 
df$Month <- strptime(df$Month, '%m/%d/%y') 

Sau đó, mã của bạn nên làm việc. Kiểm tra ô bên dưới:

ggplot2_strptime_solution

+0

Cảm ơn bạn rất nhiều. – Siya

+0

@Arun Làm thế nào để bạn succed để đọc dữ liệu của mình .. khi tôi đã cố gắng tôi đã có một số vấn đề ... bằng cách sử dụng read.table (text = '..') – agstudy

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