当使用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" ))
)
)
有什么好主意吗?非常感谢提前!
答案 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)
我可能错误地分辨了线条和图例级别,由你来纠正它! ;)