4

当使用 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 放入图例脚本中?我尝试了很多方法,例如

没有。

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"))
  )
      )

没有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" ))
  )
      )

有什么好主意吗?提前谢谢了!

4

2 回答 2

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))
于 2013-06-25T12:37:04.553 回答
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)

我可能误会了线条和图例级别,由您来纠正!;)

于 2013-06-25T12:24:38.587 回答