如何将字符(或数字)变量与R中LEGEND的表达式组合在一起

时间:2013-06-25 12:03:37

标签: r character expression legend

当使用R绘制带有表达式和字符变量的图例的三行时,我写道,例如:

b1<-2
c1<-3
d1<-4
a<-seq(1,10)
b<-a+b1
c<-a+c1
d<-a+d1

plot(NA
 ,axes = FALSE       
 ,xlim=c(0,10)
 ,ylim=c(0,15)
 )
box()

lines(a,b,col=1)
lines(a,c,col=2)
lines(a,d,col=3)

legend(8,2
,c(expression(paste(italic(b)[1],"=2","m"))
,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

上面的脚本产生了我想要的图例,但是,值b1,c1和d1在脚本中是硬编码的。

有没有办法将变量b1,c1和d1放在图例脚本中?我尝试了很多方法,比如

NO1。

b2<-as.character(b1)
legend(6,2
,c(expression(paste(italic(b)[1],b2,"m"))
,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

NO 2。

legend(4,2
 ,c(bquote(paste(italic(b) [1], "=",.(b1),"m" ))

,expression(paste(italic(c)[1],"=3","m"))
,expression(paste(italic(d)[1],"=4","m"))
  )
      )

这个适用于第一行,但是如果我用bquote制作三行,它就不再起作用了:

legend(2,2
 ,c(bquote(paste(italic(b) [1], "=",.(b1),"m" ))

,bquote(paste(italic(b) [1], "=",.(b1),"m" ))
,bquote(paste(italic(b) [1], "=",.(b1),"m" ))
  )
      )

有什么好主意吗?非常感谢提前!

2 个答案:

答案 0 :(得分:5)

尝试这样的事情:

lgnd <- c(bquote(italic(b)[1] == .(b1)*m),
          bquote(italic(c)[1] == .(c1)*m),
          bquote(italic(d)[1] == .(d1)*m))
legend(2,4, as.expression(lgnd))

答案 1 :(得分:0)

我认为应该给你你想要的不是吗?

leg<-as.factor(paste("m =",c(b1,c1,d1)))
legend("bottomright", levels(leg), lwd=1, lty=1, col=c(1,2,3), cex=1.25)

我可能错误地分辨了线条和图例级别,由你来纠正它! ;)