Come posso manipolare il testo della striscia dei grafici facet_grid?


100

Mi chiedo come posso manipolare la dimensione del testo della striscia in grafici sfaccettati. La mia domanda è simile a una domanda sui titoli della trama , ma mi interessa in particolare manipolare non il titolo della trama ma il testo che appare nei titoli delle faccette (strip_h).

Ad esempio, considera il set di dati mpg.

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

L' output risultante produce alcuni titoli di sfaccettature che non si adattano alla striscia.

Penso che ci debba essere un modo da usare gridper gestire il testo della striscia. Ma io sono ancora un novizio e non ero sicuro dal gridappendice nel libro di Hadley come, appunto, per farlo. Inoltre, avevo paura che se avessi sbagliato avrei rotto la lavatrice, dal momento che credo che tutta la tecnologia sia collegata tramite The Force :-(

Molte grazie in anticipo.

Risposte:


134

Puoi modificare strip.text.x(o strip.text.y) usando theme_text(), ad esempio

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

Aggiornamento: per la versione ggplot2> 0.9.1

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

+1 Molto carino. C'è un modo per migliorare anche l'annotazione dell'asse x?
George Dontas

Grazie rcs. Sono con gd047, e forse dovrebbe essere una domanda a parte? Quello che stai notando è l'affollamento dei principali valori x, credo. Dovrebbe esserci un modo per impostare manualmente i valori dei principali segni di graduazione dell'asse xe dell'asse y, ma non ricordo cosa sia :-(
briandk

@ gd047:axis.text.x=theme_text(...)
rcs

1
Links in questo Q dovrebbero essere in qualche modo informativo: stackoverflow.com/questions/2258784/list-of-ggplot2-options
romana Lustrik


6

Immagino che nell'esempio della mpgmodifica dell'angolo di rotazione e della dimensione del carattere vada bene, ma in molti casi potresti trovarti con variabili che hanno etichette piuttosto lunghe e può diventare un dolore al collo (letteralmente) provare a leggere etichette lunghe ruotate .

Quindi, in aggiunta (o complemento) alla modifica di angoli e dimensioni, di solito riformatto le etichette dei fattori che definiscono facet_gridogni volta che possono essere divisi in un modo che abbia senso.

In genere se ho un dataset$variablecon le stringhe che assomiglia

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

Faccio semplicemente:

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

[forse ci sono definizioni migliori di reformatma almeno questa funziona bene.]

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

E dopo la sfaccettatura, tutte le etichette saranno molto leggibili:

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

1
Forse qualcosa del genere è migliore: livelli (uccelli $ effetto) <- gsub ("", "\ n", livelli (uccelli $ effetto))
dca
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.