2014-10-23 17 views
5

Tôi có một bảng có sẵn tại đây: http://ulozto.cz/xAeP3Ahn/res2-txt. Tôi đang cố gắng để làm cho một âm mưu điểm từ đó.Nhận các kết quả khác nhau bằng cách sử dụng các hàm ggplot và ô cốt truyện

tôi đọc bảng của tôi:

res2<-read.table("res2.txt", header = TRUE, sep="\t") 

và tạo 2 lô.

(1) Đây là kịch bản cho chức năng cốt truyện duy nhất:

plot(res2$V2, res2$dist06, type = "n") 
points(subset(res2$V2, year == 2006), subset(res2$dist06, year == 2006), pch = 19, col = "red", cex = 1) 
points(subset(res2$V2, year == 2007), subset(res2$dist06, year == 2007), pch = 19, col = "green", cex = 1) 
points(subset(res2$V2, year == 2008), subset(res2$dist06, year == 2008), pch = 19, col = "black", cex = 1) 
points(subset(res2$V2, year == 2009), subset(res2$dist06, year == 2009), pch = 19, col = "blue", cex = 1) 
points(subset(res2$V2, year == 2011), subset(res2$dist06, year == 2011), pch = 19, col = "yellow", cex = 1) 
legend("topright", c("2006", "2007", "2008", "2009", "2011"), 
    col= c("red", "green", "black", "blue", "yellow"), 
    pch = c(19,19,19,19,19)) 

(2) và cho ggplot2:

res2$year<-as.factor(res2$year) # consider year variable as discrete 
ggplot(data=res2, aes(x=V2, y=dist06, color=year)) + geom_point(shape=16, pch=50) + 
    xlab("threshold") + ylab("Euclidean distance") + 
    scale_fill_hue(name="year") + # set legend title 
    scale_colour_manual(values=c("red", "green", "black", "blue", "yellow")) + 
    theme_bw() 

Dưới đây là kết quả của tôi:

results from simple plot function (1) and froom ggplot2 (2)

Câu hỏi của tôi là, lý do tại sao tôi có một điểm khác biệt positio n trong các lô được tạo ra khác nhau? là vấn đề chỉ có màu sắc và truyền thuyết khác nhau? các tập con "" được định nghĩa sai? Tại sao 2006 được đánh dấu màu đỏ ở cả hai nhưng có vị trí khác nhau trong biểu đồ? cùng với năm 2011 và những người khác? Tôi đang ở đâu? Cảm ơn mọi đề xuất, tôi bị lạc ở đây vào ngày thứ ba.

Đây là resuls tôi từ excel, do đó cốt truyện từ ggplot2 (2) phải được quyền plot from same data in excel

+0

Tôi không nghĩ rằng cốt truyện (1) được tạo bởi mã trong câu hỏi của bạn. Thử: 'tập con (res2 $ V2, năm == 2006)'; 'numeric (0)'. – Henrik

+0

Không phải là câu trả lời cho câu hỏi của bạn, nhưng để tránh một số cuộc gọi 'điểm', một cho mỗi năm, bạn có thể tạo một vector màu bằng cách đặt vector" col "của bạn với cột" năm ":' lô (dist06 ~ V2, dữ liệu = res2, type = "n") '; 'điểm (dist06 ~ V2, dữ liệu = res2, col = col [yếu tố (res2 $ năm)])' – Henrik

Trả lời

4

Tôi cho rằng đây là một tác dụng phụ của một sử dụng không đúng cách subset. Đối số đầu tiên nó phải được khung dữ liệu tổng thể, như vậy:

subset(res2, year == 2006)$V2 

hoặc

subset(res2, year == 2006, select = V2) 

(Side lưu ý: các đối tượng được trả về bởi các lệnh này là khác nhau, nhưng cả hai sẽ làm việc cho âm mưu của bạn)

tôi khuyên bạn nên sử dụng một ký hiệu khung:

res2$V2[res2$year == 2006] 

Dù bằng cách nào, bạn sẽ nhận được ac orrect cốt truyện:

enter image description here

Như bạn có thể nhận thấy, bạn không cần phải sao chép/dán rất nhiều với ggplot cách tiếp cận. Tốt đẹp!

+0

Cảm ơn @tonytonov, tôi sẽ không bao giờ nghĩ về điều đó! Tôi đã thay đổi "tập con" như bạn đã đề xuất, và nó hoạt động, cảm ơn một lần nữa! :) – maycca

+0

Bạn được chào đón! – tonytonov

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