2015-12-08 2 views
1

Моя цель состоит в том, чтобы в моей легенде было несколько строк, которые будут выглядеть как этот формат, Nsubscript (M), Nsubscript (F). Нижние индексы будут использоваться для сокращения моей легенды. Будут переменные, которые необходимо будет оценить, чтобы получить числовые значения. Как сделать несколько строк легенд с индексами и переменными?Использование индексов и переменных для нескольких легенд для графиков R

Мне нужно получить несколько поручений для работы. Формат ниже - это то, что я хочу для части легенды.

#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 

Однако мне нужно, чтобы несколько букв работали в одной легенде. Как мне это сделать?

#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

Вы должны использовать as.expression с bquote внутри звонка c.

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

Это работает.

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

Смежные вопросы