2016-10-08 2 views
0

Я пытаюсь создать петлю для построения нескольких линий в разных цветах. Я знаю, что это можно легко сделать, используя ggplot2, и я использовал его много в прошлом, но теперь ggplot2 дает мне дополнительные строки, которых не должно быть.Петля с линиями плотности разных цветов в R

Я попробовал много разных комбинаций, чтобы создать новую переменную для цвета или дополнительный цикл внутри, но просто не мог решить эту проблему. Лучшее, что я до сих пор получил, было иметь все линии одного цвета (красного или зеленого), но это бесполезно. Это код, который я использую. Я хотел бы получить другой цвет для каждого var2. Спасибо!

a <- data.frame(var1=rnorm(500, m=0.5, sd=1), 
       var2=c("a")) 
b <- data.frame(var1=rnorm(500, m=0.6, sd=1.1), 
      var2=c("b")) 
c <- data.frame(var1=rnorm(500, m=0.7, sd=1.2), 
      var2=c("c")) 
mydata<-data.frame(rbind(a,b,c)) 

y<-unique(mydata$var2) 

plot(1, type="n", xlab="", ylab="", xlim=c(-5,5), ylim=c(0, 0.5)) 
for (i in y){ 
    lines(density(mydata$var1[mydata$var2==i]))} 

density plot

ответ

0

Я просто понял, как решить эту проблему. Я отправлю здесь, если кому-то это понадобится. Во-первых, создать новую переменную с цветом для каждого var2:

a <- data.frame(var1=rnorm(500, m=0.5, sd=1), 
       var2=c("a")) 
a$color<-c("#FF0000FF") 

Затем назначить цвет для каждой кривой:

col=mydata$color[mydata$var2==i] 

Окончательный код, который я получил это:

a <- data.frame(var1=rnorm(500, m=0.5, sd=1), 
       var2=c("a")) 
a$color<-c("#FF0000FF") 
b <- data.frame(var1=rnorm(500, m=0.6, sd=1.1), 
      var2=c("b")) 
b$color<-c("#00FF00FF") 
c <- data.frame(var1=rnorm(500, m=0.7, sd=1.2), 
      var2=c("c")) 
c$color<-c("#0000FFFF") 
mydata<-data.frame(rbind(a,b,c)) 

y<-unique(mydata$var2) 
plot(1, type="n", xlab="", ylab="", xlim=c(-5,5), ylim=c(0, 0.5)) 
for (i in y){ 
    lines(density(mydata$var1[mydata$var2==i]),col=mydata$color[mydata$var2==i])} 

Надеюсь, что это поможет кому-то

Смежные вопросы