2011-09-10 8 views
13

Comment changer le texte affiché dans les bandes de tracés? exemple: suppose que j'ai un test de trame de données composé de 3 colonnesChanger le texte sur les bandes dans les trames en treillis

x 
[1] 1 2 3 4 5 6 7 8 9 10 

y 
[1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" 

a 
[1] -1.9952066 -1.7292978 -0.8789127 -0.1322849 -0.1046782 0.4872866 
[7] 0.5199228 0.5626998 0.6392686 1.6604549 

un appel normal à un tracé en treillis

xyplot(a~x | y,data=test) 

donnera le terrain avec le texte 'A' et 'B' sur les bandes

Comment puis-je obtenir différents textes écrits sur les bandes?

Un attept avec un autre vecteur de caractère

z 
[1] "a" "a" "a" "a" "a" "b" "b" "b" "b" "b" 

et un appel à strip.custom()

xyplot(a~x | y,data=test,strip=strip.custom(var.name=z)) 

ne donne pas le résultat souhaité.

En réalité, c'est un problème d'internationalisation.

Répondre

8

Si vous faites votre vecteur de caractère un facteur, alors vous pouvez simplement changer les niveaux:

> xyplot(a~x | y,data=test)  # your plot 
> test$y=as.factor(test$y)  # convert y to factor 
> xyplot(a~x | y,data=test)  # should be identical 
> levels(test$y)=c("Argh","Boo") # change the level labels 
> xyplot(a~x | y,data=test)  # new panel labels! 
14

Je pense que ce que vous voulez peut être obtenu par:

z <-c("a" , "b") # Same number of values as there are panels 
xyplot(a~x | y,data=test,strip=strip.custom(factor.levels=z)) 
+1

Vous n'avez pas besoin " z 'variable: factor.levels = c ("a", "b") le fera. – Spacedman

+1

J'essayais juste de souligner qu'il fallait avoir le même nombre de niveaux que les panneaux plutôt que le nombre de points de données –

Questions connexes