2009-09-05 10 views
6

Je veux créer un tracé de paires dans R qui a des étiquettes sur la diagonale écrites en lettres grecques. J'ai essayé de créer une fonction text.panel personnalisée qui enveloppe les étiquettes dans un appel expression(), mais cela ne fonctionne pas.Comment imprimer des lettres grecques sur la diagonale d'un tracé de paires dans R?

Voici un exemple simple de test:

pairs.greek <- function(x, ...) 
{ 
    panel.txt <- function(x, y, labels, cex, font, ...) 
    { 
    lab <- labels 
    text(0.5, 0.5, expression(lab), cex=cex, font=font) 
    } 
    pairs(x, text.panel=panel.txt) 
} 
dat <- data.frame(alpha=runif(10), beta=runif(10), gamma=runif(10)) 
pairs.greek(dat) 

Répondre

5

expression(lab) n'évalue pas réellement lab si vous finissez d'être lab toutes les étiquettes. Au lieu de cela, vous pouvez changer cette ligne à:

text(0.5, 0.5, parse(text=lab), cex=cex, font=font) 

qui fera ce que vous voulez. Notez que la fonction pairs accepte également un argument labels, donc cela fonctionnerait aussi:

pairs(dat, labels=c(expression(alpha), expression(beta), expression(gamma)))