2010-05-01 14 views
67

Mi chiedo come posso manipolare la dimensione del testo della striscia in trame sfaccettate. La mia domanda è simile a a question on plot titles, ma sono specificamente interessato a che manipola non il titolo della trama ma il testo che appare nei titoli facet (strip_h).Come posso manipolare il testo della striscia di diagrammi facet_grid?

Ad esempio, si consideri il set di dati mpg.

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

La risultante output produce alcuni titoli sfaccettatura che non rientrano nella striscia.

Sto pensando che ci deve essere un modo per utilizzare grid per gestire il testo della striscia. Ma io sono ancora un principiante e non ero sicuro dall'appendice grid in Hadley's book come, precisamente, per farlo. Inoltre, avevo paura, se l'ho fatto di sbagliato si spezzerebbe la mia lavatrice , dal momento che credo che tutti tecnologia è connesso con la forza :-(

Molte grazie in anticipo.

risposta

95

È possibile modificare strip.text.x (o strip.text.y) utilizzando theme_text(), per esempio

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

Aggiornamento: per ggplot2 versione> 0.9.1

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

+1 Molto bello. C'è un modo per migliorare anche l'annotazione dell'asse x? –

+0

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

+0

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

24

Oggigiorno l'uso di opts e theme_text sembra essere deprecato. R suggerisce di utilizzare theme e element_text. Una soluzione per la risposta può essere trovata qui: 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)) 
+0

Grazie per la tua risposta, sarebbe ancora meglio se potessi fornire un esempi di riepilogo e codice dal tuo link, qui su SO. In questo modo non dipendiamo dal collegamento ancora esistente perché il contenuto è direttamente su SO. –

+1

Ho aggiunto un esempio di codice. – moi

3

immagino nell'esempio di mpg cambiando l'angolo di rotazione e la dimensione del carattere va bene, ma in molti casi si potrebbe trovare con variabili che hanno abbastanza lunghe etichette e può diventare un dolore al collo (letteralmente) per provare a leggere lunghe etichette ruotate.

Quindi, in aggiunta (o complementare) a modificare angoli e dimensioni, di solito riformattare le etichette dei fattori che definiscono lo facet_grid ogni volta che possono essere suddivisi in un modo che abbia senso.

In genere se ho un dataset$variable con le stringhe che assomiglia

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

faccio semplicemente: [. Forse ci sono migliori definizioni di reformat, ma almeno questo funziona bene]

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

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

E a sfaccettatura, tutte le etichette saranno b e molto leggibile:

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

Forse qualcosa di simile è meglio: livelli (uccelli $ effect) <- gsub ("", "\ n", livelli (birds $ effect)) – dca

Problemi correlati