2012-05-16 16 views
5

Próbuję wyrysować greckie symbole jako etykiety osi. Ze względu na zapętlenie kilka działek o różnych skalach, chciałbym użyć wektor, który zawiera nazwę symbolu zamiast używania nazwy symbolu ciągu expression(), które działa prawidłowo:Wykreślanie etykiet osi za pomocą greckich symboli z wektora

x <- rnorm(10, 5,6) 
y <- rnorm(10, 2,1) 
xlab <- expression(paste(mu, "mol/mol")) 
plot(x,y, xlab = xlab) 

Z jakiegoś powodu, nie mogę zastąpić „Mu” z wektorem zawierającym nazwę symbol:

k <- "mu" 
xlab <- expression(paste(get(k), "mol/mol")) 
plot(x,y, xlab = xlab) 

znalazłem podobnego question, ale co pracował dla funkcji nie wydaje się pracować dla symboli greckich:

ylab <- substitute(paste(nn, "mol/mol"), list(nn=k)) 
xlab <- bquote(.(k) * "mol/mol") 

plot(x,y, ylab = ylab, xlab = xlab) 

Co mam zrobić źle? Jak zdobyć grecki symbol na etykiecie osi poprzez wektor?

+0

wyrażenie jest funkcją pierwotną. Nie ocenia swoich argumentów. – vinux

+1

Czy [ten Q & A] (http://stackoverflow.com/questions/10042258/generate-a-list-of-expression-literals-from-an-integer-sequence) pomaga? – fotNelton

+0

@fotNelton: To by nie działało co najmniej: ylab <- do.call ("wyrażenie", lapply (k, funkcja (i) zamiennik (k * "mol/mol", list (k = i)))) – Mikko

Odpowiedz

5

Spróbuj tego:

xlab = parse(text=paste(k, "*mol/mol")) 
+0

Czy ktoś może wyjaśnić, dlaczego '*' jest konieczne i co robi? – Henrik

+0

Dziękuję baptyście! – Mikko

+1

'? Plotmath' sugeruje, że jest on używany w' x * y' do "zestawiania x i y", czyli umieszczania ich jeden po drugim (bez spacji). – baptiste

Powiązane problemy