2012-05-24 29 views
11

Tôi có một dữ liệu mà trông như thế này:Làm thế nào để vẽ nhiều dòng trong R

#d TRUE FALSE Cutoff 
4 28198 0 0.1 
4 28198 0 0.2 
4 28198 0 0.3 
4 28198 13 0.4 
4 28251 611 0.5 
4 28251 611 0.6 
4 28251 611 0.7 
4 28251 611 0.8 
4 28251 611 0.9 
4 28251 611 1 
6 19630 0 0 
6 19630 0 0.1 
6 19630 0 0.2 
6 19630 0 0.3 
6 19630 0 0.4 
6 19636 56 0.5 
6 19636 56 0.6 
6 19636 56 0.7 
6 19636 56 0.8 
6 19636 56 0.9 
6 19636 56 1 

Vì vậy, tôi muốn âm mưu họ dựa trên True (trục Y) và False (trục X).

Đây là cách tôi muốn nó xuất hiện gần. This is the way I want it to appear roughly

Cách phù hợp để làm điều đó là gì? Mã của tôi dưới đây không

dat<-read.table("mydat.txt", header=F); 
dis  <- c(4,6); 
linecols <-c("red","blue"); 
plot(dat$V2 ~ dat$V3, data = dat, xlim = c(0,611),ylim =c(0,28251), type="l") 

for (i in 1:length(dis)){ 
datax <- subset(dat, dat$V1==dis[i], select = c(dat$V2,dat$V3)) 
lines(datax,lty=1,type="l",col=linecols[i]); 
} 

Trả lời

7

Kể từ khi dữ liệu của bạn là đã có trong định dạng dài và tôi thích đồ họa ggplot dù sao, tôi muốn đề nghị con đường đó. Sau khi đọc dữ liệu của bạn trong (lưu ý rằng TRUEFALSE không tên hợp lệ, vì vậy R nối một . với tên cột), sau đây nên làm việc:

require(ggplot2) 
ggplot(dat, aes(FALSE., TRUE., colour = as.factor(d), group = as.factor(d))) + 
    geom_line() 

Trang web ggplot2 là đầy đủ của lời khuyên tốt. Cũng lưu ý this search query on SO cho nhiều mẹo hay khác về các chủ đề có liên quan.

enter image description here

Và đối với các hồ sơ, dưới đây là cách tôi muốn tiếp cận vấn đề của bạn thay đổi mã ban đầu của bạn:

colnames(dat)[2:3] <- c("T", "F") 

dis <- unique(dat$d) 

plot(NA, xlim = c(0, max(dat$F)), ylim = c(0, max(dat$T))) 
for (i in seq_along(dis)){ 
    subdat <- subset(dat, d == dis[i]) 
    with(subdat, lines(F,T, col = linecols[i])) 
} 
legend("bottomright", legend=dis, fill=linecols) 

enter image description here

+0

cảm ơn. Sau khi đọc dữ liệu. Nó đã cho tôi lỗi này: Lỗi trong eval (expr, envir, enclos): đối tượng 'FALSE'. không tìm thấy. – neversaint

+1

@neversaint - Tôi đoán là R đang gặp vấn đề vì TRUE và FALSE là các từ dành riêng trong R. Thay đổi tên cột của bạn thành một cái gì đó như T và F và tất cả sẽ ổn. Tôi không nên cố gắng đưa ví dụ cùng với những cái tên đó ... nó sẽ dẫn đến rắc rối cho bạn. 'colnames()' là hàm bạn đang theo dõi. – Chase

6

Dưới đây là một phương pháp cơ bản R, giả sử dữ liệu của bạn được gọi là dat trong ví dụ này:

plot(1:max(dat$false), xlim = c(0,611),ylim =c(19000,28251), type="n") 

apply(
rbind(unique(dat$d),1:2), 
#the 1:2 here are your chosen colours 
2, 
function(x) lines(dat$false[dat$d==x[1]],dat$true[dat$d==x[1]],col=x[2]) 
) 

Kết quả:

enter image description here

chỉnh sửa - trong khi sử dụng chữ thường đúng/sai cho tên biến được chấp nhận, thì có lẽ nó vẫn không phải là thực hành mã hóa vĩ đại nhất.

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