2013-05-16 43 views
7

Sử dụng plot trong R làm cho các yếu tố trên trục x được sắp xếp theo thứ tự bảng chữ cái.Làm cách nào để sắp xếp lại trục x trong một ô trong R?

Làm cách nào để xác định thứ tự của các yếu tố trên trục x?

Ví dụ:

y <- 1:9 
x <- c(rep("B", 3), rep("A", 3), rep("C", 3)) 
plot(y ~ as.factor(x)) 

Điều này dẫn đến:

enter image description here

Làm thế nào tôi có thể có được điều này để vẽ là "B", "A", "C"?

Trả lời

9

Bạn chỉ cần chỉ định cấp độ của yếu tố theo thứ tự bạn muốn. Vì vậy, ở đây tôi tạo ra một biến mới x1

x1 = factor(x, levels=c("B", "C", "A")) 

nơi

R> x1 
[1] B B B A A A C C C 
Levels: B C A 

Chức năng plot hiện đang làm việc như mong đợi.

plot(y ~ x1) 
+0

Thảo luận nhiều hơn ở đây: http://stackoverflow.com/questions/11587111/setting-levels-when-creating-a-factor-vs-levels – harkmug

2

Có vẻ như bạn muốn vẽ chúng theo một số thứ tự dựa trên giá trị 50% của mỗi ô ô? Lấy một khung dữ liệu khác làm ví dụ:

temp <- structure(list(
    Grade = c("U","G", "F", "E", "D", "C", "B", "A", "A*"), 
    n = c(20L, 13L, 4L, 13L, 36L, 94L, 28L, 50L, 27L)), 
    .Names = c("Grade", "n"), 
    class = c("tbl_df", "data.frame"), 
    row.names = c(NA, -9L)) 

Nếu chúng tôi vạch ra điều này, chúng ta có thể thấy các nhãn bị sai lệch (A đến trước A *).

library(ggplot2) 
ggplot(temp) + 
geom_bar(stat="identity", aes(x=Grade, y=n)) 

enter image description here

Chúng ta có thể đặt hàng này một cách thủ như trình bày ở trên, hoặc chúng ta có thể quyết định để vẽ các lớp theo thứ tự số lượng sinh viên nhận được từng lớp. Đây cũng có thể được thực hiện bằng tay, nhưng nó sẽ tốt hơn nếu chúng ta có thể tự động hoá này:

Đầu tiên chúng tôi ra lệnh cho dataframe:

library(dplyr) 
temp <- temp %>% arrange(n) 

Sau đó chúng tôi thay đổi cấp độ bên trong cột Grade để đại diện cho thứ tự của các dữ liệu

temp$Grade <- as.vector(temp$Grade) #get rid of factors 
temp$Grade = factor(temp$Grade,temp$Grade) #add ordered factors back 

Chạy cùng một biểu đồ lệnh được hiển thị ở trên cung cấp cho bạn dữ liệu được vẽ bằng trục x được sắp xếp khác.

enter image description here

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