2015-12-08 75 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