【问题标题】:R add legend to plots with loopR将图例添加到带有循环的图中
【发布时间】:2014-03-01 17:29:00
【问题描述】:

我有一个 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 向量中的相应值。我如何做到这一点?到目前为止,我所有的尝试都失败了……

【问题讨论】:

  • 也许你可以使用legend函数:例如:legend("bottom", legend = paste0(alpha, ";", beta), col = color, pch = 20)
  • >到目前为止,我所有的尝试都失败了……你尝试了什么?
  • 我一直在错误地使用图例功能,不知道粘贴功能。 @JulienNavarre 您的代码有效。不幸的是,图例显示在情节内,而不是在情节的底部。我做错了什么?

标签: r loops for-loop legend


【解决方案1】:

不是基本图形,但 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 是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多