2012-05-24 21 views
11

yılında birden fazla satır çizmek için: Şöyle bir veriye sahip Nasıl 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 

Yani Gerçek (Y ekseni) ve Yanlış (X ekseni) dayalı bunları çizmek istiyorum.

Bu, kabaca görünmesini istediğim yoldur. This is the way I want it to appear roughly

Bunu yapmanın doğru yolu nedir? Veri uzun formatta zaten ve ben bu yolu öneririm, zaten ggplot grafikleri gibi yana Kodum aşağıda

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]); 
} 

cevap

7

başarısız olur. Verilerinizi okuduktan sonra şu çalışmalı, (R sütun adları için . eklenen bu yüzden, TRUE ve FALSE geçerli isimler unutmayınız):

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

ggplot2 web sitesi iyi ipuçları doludur. Ayrıca, ilgili konularda diğer birçok iyi ipucu için this search query on SO not edin. denir Verilerinizi varsayarak

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) 
İşte

enter image description here

+0

teşekkürler. Verileri okuduktan sonra. Bana bu hatayı verdi: Değerlendirmede hata (expr, envir, muhafaza): object 'FALSE.' bulunamadı. – neversaint

+1

@neversaint - Tahminimce, R'nin TRUE ve FALSE'den beri R'nin kelimelerle ilgili olduğu tahmin ediliyor. Sütun adlarınızı T ve F gibi bir şeye dönüştürün ve her şey iyi olmalıdır. Örneği bu isimlerle bir araya getirmemeye bile çalışmamalıydım ... sadece sizin için sorun yaratacaktır. 'colnames()', peşinde olduğunuz işlevdir. – Chase

6

bir taban R yöntemidir:

enter image description here

Ve kayıt için

, burada orijinal kodunu değiştirme sorununuzu yaklaşımınız olacağını nasıl Bu örnekteki dat:

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]) 
) 

Sonuç:

enter image description here

düzenleme - Değişken isimleri için yanlış/küçük harf doğrudur kullanılarak kabul edilirken, muhtemelen hala büyük kodlama uygulama değildir.