web-dev-qa-db-fra.com

Comment puis-je manipuler le texte de bande des tracés facet_grid?

Je me demande comment je peux manipuler la taille du texte de bande dans les tracés à facettes. Ma question est similaire à ne question sur les titres de l'intrigue , mais je suis spécifiquement préoccupé par la manipulation non pas du titre de l'intrigue mais du texte qui apparaît dans les titres de facette (strip_h).

Par exemple, considérons l'ensemble de données mpg.

    library(ggplot2) 
    qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)

Le résultat sortie produit des titres de facettes qui ne tiennent pas dans la bande.

Je pense qu'il doit y avoir un moyen d'utiliser grid pour traiter le texte de la bande. Mais je suis toujours un novice et je n'étais pas sûr de l'appendice grid dans le livre de Hadley comment, précisément, le faire. De plus, j'avais peur que si je le faisais mal, cela briserait ma machine à laver, car je crois que toute la technologie est connectée via The Force :-(

Merci d'avance.

80
briandk

Vous pouvez modifier strip.text.x (Ou strip.text.y) En utilisant theme_text(), par exemple

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90))

Mise à jour: pour la version ggplot2> 0.9.1

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
110
rcs

De nos jours, l'utilisation de opts et theme_text semble obsolète. R suggère d'utiliser theme et element_text. Une solution à la réponse peut être trouvée ici: http://wiki.stdout.org/rcookbook/Graphs/Facets%20%28ggplot2%29/#modifying-facet-label-text

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
26
moi

Je suppose que dans l'exemple de mpg changer l'angle de rotation et la taille de la police est bien, mais dans de nombreux cas, vous pourriez vous retrouver avec des variables qui ont des étiquettes assez longues, et cela peut devenir une douleur dans le cou (littéralement) pour essayer de lire de longues étiquettes pivotées.

Donc, en plus (ou en complément) des changements d'angles et de tailles, je reformate généralement les étiquettes des facteurs qui définissent le facet_grid chaque fois qu'ils peuvent être divisés d'une manière qui a du sens.

Généralement, si j'ai un dataset$variable avec des chaînes qui ressemblent à

c("median_something", "aggregated_average_x","error","something_else")

Je fais simplement:

reformat <– function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) }

[il y a peut-être de meilleures définitions de reformat mais au moins celle-ci fonctionne bien.]

dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n')

Et lors du facettage, toutes les étiquettes seront très lisibles:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
3
G Chalancon