2011-10-03 110 views
0

我在R中使用以下代碼在單個圖上繪製兩條密度曲線;將圖例添加到R中的密度圖中

mydata1<-read.csv(file="myfile1.csv",head=TRUE,sep=",") 
mydata2<-read.csv(file="myfile2.csv",head=TRUE,sep=",") 

pdf("comparison.pdf") 

plot.multi.dens <- function(s) 
{ 
    junk.x = NULL 
    junk.y = NULL 
    for(i in 1:length(s)) { 
     junk.x = c(junk.x, density(s[[i]])$x) 
     junk.y = c(junk.y, density(s[[i]])$y) 
    } 
    xr <- range(junk.x) 
    yr <- range(junk.y) 
    plot(density(s[[1]]), xlim = xr, ylim = yr, xlab="Usage",main = "comparison") 
    for(i in 1:length(s)) { 
     lines(density(s[[i]]), xlim = xr, ylim = yr, col = i) 
    } 
} 

plot.multi.dens(list(mydata2$usage,mydata1$usage))  
dev.off() 

現在的問題是,這是所生產的曲線圖示出了兩條線,但圖中不包括的信息哪一行是哪個。例如,在輸出中,它應該顯示紅線是「a」,黑線是「b」。我是R的新手,這就是爲什麼我有一些困難。任何幫助將不勝感激!從Quickr的網站

+0

我得到它。我添加了添加圖例功能! –

回答

1

回答

# Compare MPG distributions for cars with 
# 4,6, or 8 cylinders 
library(sm) 
attach(mtcars) 

# create value labels 
cyl.f <- factor(cyl, levels= c(4,6,8), 
    labels = c("4 cylinder", "6 cylinder", "8 cylinder")) 

# plot densities 
sm.density.compare(mpg, cyl, xlab="Miles Per Gallon") 
title(main="MPG Distribution by Car Cylinders") 

# add legend via mouse click 
colfill<-c(2:(2+length(levels(cyl.f)))) 
legend(locator(1), levels(cyl.f), fill=colfill) 
+0

在我運行圖例聲明之後,它給了我一個「圖形設備錯誤」,但是在用我的代碼調整了圖例聲明之後,我設法弄清了它!:)謝謝你的注意! –

+0

爲什麼quickR的代碼必須手動指定級別和標籤?這是很多工作。在我的數據集中,我有20多個關卡。當我嘗試做類似的事情(更具動態性)時,我的圖例與曲線不匹配。 –