2015-12-08 26 views
1

我的目标是在我的图例中有多行看起来像这种格式的Nsubscript(M),Nsubscript(F)。下标将用于使我的传说速记。将会有变量需要评估以获取数值。如何用下标和变量制作多行图例?为R图的多个图例使用下标和变量

我需要得到多个bquotes才能工作。下面的格式是我想要的图例部分。

#this works 
N_male<-4#random variable 
N_female<-6#random variable 
plot(x=2,y=3)#random plot 
legend("topright",legend=bquote('N'['F']*' = '*.(N_female)), 
text.col="black",box.col=0, bty="n", cex = .75, lty= c(2)) #this legend has 
#correct syntax 

但是我需要让多个bquotes在同一个图例中工作。我怎么做?

#this does not work 
N_male<-4#random variable 
N_female<-6#random variable 

plot(x=2,y=3) 
legend("topright",legend=c(bquote('N'['M']*' = '*.(N_male)), 
bquote('N'['M']*' = '*.(N_female))), 
text.col="black",box.col=0, bty="n", cex = .75, lty= c(1,2)) #this legend does not evaluate the bquote part 
+0

不要编辑问题标题,包括对问题情况的意见。如果答案解决了您的问题,请单击旁边的复选标记,问题将自动标记为“已解决”。 – joran

回答

2

您需要在c调用中使用as.expressionbquote

my.expressions <-c(as.expression(bquote('N'['F']*' = '*.(N_female))),as.expression(bquote('N'['M']*' = '*.(N_male)))) 

N_male<-4#random variable 
N_female<-6#random variable 
plot(x=2,y=3)#random plot 
legend("topright",legend=my.expressions, 
text.col="black",box.col=0, bty="n", cex = .75, lty= c(2:3)) 

enter image description here

+0

@P Lapointe你怎么知道该怎么做?我花了不少时间在这个上,我的关闭解决方案是多次调用'传奇',每一行都有一个。 – Meli

+0

来自经验。不要忘记通过点击复选标记来接受答案。 –

+0

很棒的回答。 @PLapointe –

0

This works。

plot(x=2,y=3) 
legend("topright",legend=c(expression(paste('N'[M], ' = ', 4)), 
          expression(paste('N'[F], ' = ', 6))), 
     text.col="black",box.col=0, bty="n", cex = .75, lty= c(1,2)) 

我测试了其他方法。看起来在lengend下使用变量和下标是不可能的。等待主手的答案!

+0

@ Ven Yao你如何得到你的代码来评估N_male和N_female变量?我的代码具有生成N_male和N_female变量的功能,因此它需要能够更新/更改。 – Meli

+0

你测试了你的代码吗?它不工作... –

+0

我测试了我的代码。我添加了一些评论以使其更清楚。 'N_male <-4'和'N_female <-6'通常具有产生数值的功能,但我只是为这个例子做了随机数。我的目标是让图例能够解释下标和变量。 – Meli