R将图例添加到带有循环的图中

时间:2014-03-01 17:29:00

标签: r loops for-loop legend

我有一个for循环,可以创建一组beta密度,在我的脚本中看起来像这样。

x = seq(0,1,0.01)
alpha <- c(1,3,5,5,1,1,2,5,5,2)
beta <-  c(2,4,15,5,1,1,2,5,5,5)
color <- c("blue","green","pink","gray","brown","yellow","purple","skyblue","plum","tan")

plot(x,dbeta(x, alpha[1], beta[1]) / sum(x), type="l", col= color[1], xlab="x-axis", ylab="y-axis")
for(i in 2:10){
 lines(x,dbeta(x, alpha[i], beta[i]), type="l", col= color[i], pch="i")
}

我现在想在图的底部创建一个图例,包含线的颜色和alpha / beta矢量的相应值。我怎么做到这一点?直到现在我的所有尝试都失败了......

1 个答案:

答案 0 :(得分:0)

不是基础图形,但ggplot是为此做的。

params = data.frame(alpha,beta)
gg <- do.call(rbind,lapply(1:nrow(params),function(i)
                    cbind(i,x,y=dbeta(x,params[i,]$alpha,params[i,]$beta))))
gg <- data.frame(gg)
library(ggplot2)
ggplot(gg,aes(x,y,color=factor(i))) + 
  geom_line(size=1)+
  scale_color_manual("Alpha,Beta",
                     values=color,
                     labels=paste0("(",params$alpha,", ",params$beta,")"))+
  theme(legend.position="bottom")

请注意,根据您对alpha和beta的定义,图4,8和9是相同的,图5和图6是相同的。