2012-07-05 11 views
5

Tôi gặp sự cố mà tôi không thể tìm được giải pháp cho. Tôi có một khung dữ liệu với các tính từ và tham gia khác nhau được tìm thấy trong hai mẫu khác nhau.Đặt hàng hai biểu đồ trong cùng một ô với ggplot

head(THAT_EXT_COMBINED) 
      ID PATTERN   NODE 
1 HRE_721_03 THAT_EXT  accepted 
2 G08_1321_01 THAT_EXT acknowledged 
3 AAW_47_03 THAT_EXT acknowledged 
4 G20_1490_01 THAT_EXT  alarming 
5 FY8_732_02 THAT_EXT  amazing 
6 HEM_128_03 THAT_EXT  amazing 

str(THAT_EXT_COMBINED) 
'data.frame': 1450 obs. of 3 variables: 
$ ID  : Factor w/ 1450 levels "A05_253_01","A05_277_07",..: 1109 827 265 853 812 1046 369 810 214 41 ... 
$ PATTERN: Factor w/ 2 levels "THAT_EXT","THAT_POST": 1 1 1 1 1 1 1 1 1 1 ... 
$ NODE : Factor w/ 201 levels "accepted","acknowledged",..: 1 2 2 6 8 8 8 10 12 15 ... 

Tôi muốn vẽ các tính từ của hai mẫu này trong tần suất giảm sử dụng hai biểu đồ trong cùng một ô. Vấn đề là có một số chồng chéo giữa hai (nghĩa là một số tính từ được tìm thấy trong cả hai mẫu) nhưng tôi chỉ muốn mỗi biểu đồ bắt đầu với tính từ thường xuyên nhất.

Dưới đây là đoạn code mà tôi đã được sử dụng cho việc phân loại khi sản xuất biểu đồ cá nhân:

THAT_EXT_COMBINED <- within(THAT_EXT_COMBINED, 
          NODE <- factor(NODE, 
              levels=names(sort(table(NODE), 
                  decreasing=TRUE)))) 

Tôi hiểu tại sao điều này không làm việc kể từ khi nó kết hợp tần số của hai mẫu nhưng tôi vẫn don' Tôi biết cách giải quyết nó. Tôi đã cố gắng sắp xếp lại() mà không có bất kỳ may mắn. Bất kỳ ý tưởng?

Đây là mã Tôi đang sử dụng cho những âm mưu:

graph<-ggplot(THAT_EXT_COMBINED, aes(x=NODE, fill=PATTERN)) + 
geom_histogram(binwidth=.5, position="dodge") 
graph + opts(axis.text.x = theme_blank()) + #removes text labels on x-axis 
scale_y_continuous("Frequency") + 
scale_x_discrete("Adjectives",breaks=NULL)+ 
opts(title = expression("Distribution of Adjectives")) 

Vấn đề với cốt truyện kết quả là các tính từ không ra lệnh nghiêm chỉnh tần số tương ứng của họ trong hai mô hình. Bất cứ ai có thể giúp đỡ với điều này?


Vì vậy, đây là biểu đồ mà tôi đã tạo bằng mã ở trên. Thay vào đó, điều tôi muốn là tính từ cho mỗi mẫu được vẽ theo thứ tự giảm, tức là cả hai biểu đồ được vẽ theo thứ tự giảm dần theo tần suất. Tôi đoán đây là câu hỏi sắp xếp, và tôi đã cố gắng sắp xếp các yếu tố theo nhiều cách khác nhau nhưng tôi không thể làm được điều đó trước tiên bởi PATTERN và trong đó bằng tần số của NODE. enter image description here

+0

Tôi nghĩ rằng bạn có thể phải tóm tắt dữ liệu của bạn trước khi tay để có thể sử dụng sắp xếp lại() –

Trả lời

0
library(reshape) 
df <- cast(THAT_EXT_COMBINED, PATTERN ~.) 
colnames(df)[2] <- "Counts" 

ggplot(df, aes(reorder(PATTERN, Counts), Counts, fill=PATTERN)) 
    + geom_bar(position="dodge") # + ... 
+0

này dường như không làm việc như tôi chỉ nhận được một thanh cho mỗi mẫu (ngay cả sau khi sửa chữa các lỗi đánh máy trong sắp xếp lại() và thay đổi thành geom_histogram()). Tôi đã chỉnh sửa bài đăng để hiển thị loại ô mà tôi muốn tạo. – user1504579

+0

Đã thêm vị trí = "né tránh". Mặc dù, nó không thực sự rõ ràng dữ liệu của bạn "trông như thế nào". Có thể một cái gì đó như 'đầu (THAT_EXT_COMBINED)' sẽ hữu ích. –

+0

Tôi đã chỉnh sửa bài đăng để bao gồm thông tin về cấu trúc của dữ liệu. Như tôi đã thấy, đây là câu hỏi về cách sắp xếp các yếu tố đầu tiên bởi PATTERN và sau đó là tần số của NODE trong hai PATTERN. – user1504579