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

100

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

À titre d'exemple, considérons le jeu de données mpg.

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

La sortie résultante produit des titres de facette qui ne rentrent pas dans la bande.

Je pense qu'il doit y avoir un moyen d'utiliser gridpour traiter le texte en bande. Mais je suis encore novice et je ne savais pas, d'après l' gridappendice du livre d'Hadley, comment le faire précisément. De plus, j'avais peur que si je le faisais mal, cela briserait ma machine à laver, car je pense que toute la technologie est connectée via The Force :-(

Merci d'avance.

briandk
la source

Réponses:

134

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))
rcs
la source
+1 Très bien. Existe-t-il un moyen d'améliorer également l'annotation de l'axe x?
George Dontas
Merci rcs. Je suis avec gd047, et peut-être que cela devrait être une question distincte? Ce que vous remarquez, c'est l'encombrement des valeurs x majeures, je pense. Il devrait y avoir un moyen de définir manuellement les valeurs des graduations principales de l'axe x et de l'axe y, mais je ne me souviens pas de ce que c'est :-(
briandk
@ gd047:axis.text.x=theme_text(...)
rcs
1
Les liens dans ce Q devraient être quelque peu informatifs: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Roman Luštrik
6

Je suppose que dans l'exemple de la mpgmodification de l'angle de rotation et de la taille de la police, c'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) d'essayer de lire de longues étiquettes tournées .

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

En règle générale, si j'ai un dataset$variableavec des chaînes qui ressemble à

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 existe peut-être de meilleures définitions de reformatmais au moins celle-ci fonctionne bien.]

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

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

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
G Chalancon
la source
1
Peut-être que quelque chose comme ça est mieux: niveaux (effet oiseaux $) <- gsub ("", "\ n", niveaux (effet oiseaux $))
dca