¿Cómo puedo manipular el texto de la tira de gráficos facet_grid?

100

Me pregunto cómo puedo manipular el tamaño de la tira de texto en gráficos facetados. Mi pregunta es similar a una pregunta sobre los títulos de la trama , pero me preocupa específicamente no manipular el título de la trama, sino el texto que aparece en los títulos de las facetas (strip_h).

Como ejemplo, considere el conjunto de datos de mpg.

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

La salida resultante produce algunos títulos de facetas que no encajan en la tira.

Creo que debe haber una forma de utilizar gridpara tratar el texto de la tira. Pero todavía soy un novato y no estaba seguro por el gridapéndice del libro de Hadley cómo, precisamente, hacerlo. Además, tenía miedo de que si lo hacía mal se rompería mi lavadora, ya que creo que toda la tecnología está conectada a través de The Force :-(

Muchas gracias de antemano.

briandk
fuente

Respuestas:

134

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 la versión 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
fuente
+1 Muy bonito. ¿Hay alguna forma de mejorar también la anotación del eje x?
George Dontas
Gracias rcs. Estoy con gd047, ¿y quizás esa debería ser una pregunta aparte? Lo que está notando es la aglomeración de los principales valores x, creo. Debería haber una forma de establecer manualmente los valores de las marcas principales del eje xy del eje y, pero no recuerdo cuál es :-(
briandk
@ gd047:axis.text.x=theme_text(...)
rcs
1
Los enlaces en esta Q deberían ser algo informativos: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Roman Luštrik
6

Supongo que en el ejemplo de mpgcambiar el ángulo de rotación y el tamaño de fuente está bien, pero en muchos casos puede encontrarse con variables que tienen etiquetas bastante largas, y puede convertirse en un dolor de cabeza (literalmente) intentar leer etiquetas largas giradas .

Entonces, además (o como complemento) de cambiar ángulos y tamaños, generalmente reformateo las etiquetas de los factores que definen facet_gridcada vez que se pueden dividir de una manera que tenga sentido.

Normalmente, si tengo un dataset$variablecon cadenas que se parece a

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

Yo simplemente hago:

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

[tal vez haya mejores definiciones de reformatpero al menos esta funciona bien].

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

Y al hacer facetas, todas las etiquetas serán muy legibles:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
G Chalancón
fuente
1
Tal vez algo como esto sea mejor: niveles (efecto $ pájaros) <- gsub ("", "\ n", niveles (efecto $ pájaros))
dca