2010-05-01 9 views
67

Me pregunto cómo puedo manipular el tamaño del texto de la tira en trazados facetados. Mi pregunta es similar a a question on plot titles, pero estoy específicamente interesado en manipulando no el título de la trama sino el texto que aparece en los títulos de las facetas (strip_h).¿Cómo puedo manipular el texto de la tira de los gráficos facet_grid?

Como ejemplo, considere el conjunto de datos de mpg.

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

El resultado output produce algunos títulos de la faceta que no encajan en la tira.

Estoy pensando que debe haber una manera de usar grid para tratar con el texto de la tira. Pero estoy todavía novato y no estaba seguro del apéndice grid en Hadley's book cómo, precisamente, para hacerlo. Además, tenía miedo si lo hice mal me rompería lavadora , ya que creo que toda la tecnología está conectado a través de la Fuerza :-(

Muchas gracias por adelantado.

Respuesta

95

Puede modificar strip.text.x (o strip.text.y) usando theme_text(), por ejemplo

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

actualización: para ggplot2 versión> 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 Muy bonito. ¿Hay alguna manera de mejorar también la anotación del eje x? –

+0

Gracias rcs. Estoy con gd047, ¿y quizás debería ser una pregunta diferente? Lo que está notando es la aglomeración de valores x mayores, creo. Debería haber una forma de establecer manualmente los valores de los principales ejes X y Y, pero no recuerdo qué es :-( – briandk

+0

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

24

Actualmente, el uso de opts y theme_text parece estar en desuso. R sugiere usar theme y element_text. Una solución a la respuesta se puede encontrar aquí: 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

Gracias por su respuesta, sería aún mejor si pudiera proporcionar un ejemplos de resumen y código de su enlace, aquí en SO. De esa manera no dependemos del vínculo que aún existe porque el contenido está directamente en SO. –

+1

He añadido un ejemplo de código. – moi

3

supongo que en el ejemplo de mpg cambiando el ángulo de rotación y el tamaño de la fuente está muy bien, pero en muchos casos puede que te encuentres con variables que tienen bastante largas etiquetas , y puede convertirse en un dolor en el cuello (literalmente) intentar leer etiquetas largas giradas.

Por lo tanto, además de (o complemento) para cambiar los ángulos y tamaños, por lo general vuelvo a formatear las etiquetas de los factores que definen el facet_grid siempre que puedan dividirse de una manera que tenga sentido.

Normalmente si tengo un dataset$variable con cuerdas que se parece a

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

hago simplemente: [. Tal vez hay una mejor definición de reformat pero al menos éste funciona bien]

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') 

Y al facetar, todas las etiquetas serán b e muy legible:

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

Tal vez algo así es mejor: niveles (aves $ efecto) <- gsub ("", "\ n", niveles (efecto $ birds)) – dca

Cuestiones relacionadas