2012-12-28 13 views
7

Sto cercando di ottenere un'etichetta per avere un esponente in esso. Ecco il codice che hoUtilizzo di un'espressione nel testo di trama - Stampa del valore di una variabile anziché del suo nome

vall = format(cor(x,y)*cor(x,y),digits=3) 
eq <- expression(paste(R^2," = ",vall,sep="")) 
text(legend.x,legend.y,eq,cex=1,font=2) 

Ma il testo appare semplicemente come questo enter image description here

Come faccio ad avere la vall effettivo di presentarsi (e non il testo "vall")

+1

duplicato? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –

+1

Non penso che questo sia un duplicato ma il titolo di questo post è un po 'fuorviante. Posso suggerire di riformattare il titolo per riflettere il problema in quanto l'esponente in realtà non sembra essere il tuo problema. –

+0

'sep =" "' non fa nulla qui (aggiunge una stringa vuota). Questo non è 'base :: pasta' ma piuttosto' plotmath'. Non farà male qui, ma non farà quello che vuoi se viene specificata una stringa non vuota. –

risposta

13

Prova bquote() , per esempio:

set.seed(1) 
vall <- format(rnorm(1),digits=3) 
eq <- bquote(bold(R^2 == .(vall))) 
sq <- seq(0, 1, by = 0.1) 
plot(sq, sq, type = "n") 
text(0.5, 0.5, eq) 

Il motivo per il tuo esempio non funziona è che R non finisce per valutare vall:

> eq2 <- expression(paste(R^2," = ",vall,sep="")) 
> eq2 
expression(paste(R^2, " = ", vall, sep = "")) 

plotmath cerca di fare qualcosa di questo, ma essenzialmente vall viene preso alla lettera.

In generale non è necessario paste() in un'espressione plotmath, è possibile creare l'espressione utilizzando operatori standard e tramite l'utilizzo di operatori di layout. Ad esempio, per un'espressione equivalente a quella prodotta vostro esempio (non valutata vall), tutti si ha realmente bisogno è:

expression(R^2 == vall) 

bquote() è un modo per avere un oggetto sostituito dal suo valore in un'espressione. Si sposta l'oggetto che si desidera sostituito dal suo valore in .(). R cercherà quindi l'oggetto e ne prenderà il valore e lo inserirà nell'espressione.

Vedere anche substitute() per un approccio alternativo a questa con un'interfaccia diversa.

+0

spiegazione approfondita +1 –

+0

questo non funziona neanche: expression (R^2 == vall) – CodeGuy

+0

tuttavia, bquote ha funzionato benissimo. grazie – CodeGuy

Problemi correlati