¿Puedo cambiar la posición de la etiqueta de la tira en ggplot de arriba a abajo?


80

Sé que esto no es un problema de visualización de datos, pero el jefe lo solicitó, así que necesito averiguar si es posible.

¡Gracias!



11
ggplot2 es un software poderoso pero obstinado; a veces es a la manera de ggplot o de ninguna manera.
Sharpie

de acuerdo, necesito hacer alguna modificación usando la cuadrícula, otra curva de aprendizaje empinada nuevamente
lokheart

Vea la publicación del foro vinculado en los comentarios en stackoverflow.com/questions/10058839/… , que brinda la
piratería de

1
¿Podrías anular la aceptación de la respuesta aceptada? Ya no es correcto, sin embargo, esta respuesta es la más acertada al buscar en Google la pregunta.
Konrad Rudolph

Respuestas:


97

Una respuesta para quienes buscan en 2016.

A partir de la ggplot2versión 2.0, el argumento switch hará esto para facet_grido facet_wrap:

De forma predeterminada, las etiquetas se muestran en la parte superior y derecha del gráfico. Si es "x", las etiquetas superiores se mostrarán en la parte inferior. Si es "y", las etiquetas del lado derecho se mostrarán a la izquierda. También se puede configurar en "ambos".

ggplot(...) + ... + facet_grid(facets, switch="both")

A partir de ggplot2 2.2.0 ,

Las tiras ahora se pueden colocar libremente facet_wrap()usando el argumento strip.position (obsoleto switch).

Los documentos actuales todavía están en 2.1, pero strip.positionestán documentados en los documentos de desarrollo.

De forma predeterminada, las etiquetas se muestran en la parte superior del gráfico. Usando strip.position es posible colocar las etiquetas en cualquiera de los cuatro lados configurandostrip.position = c("top", "bottom", "left", "right")

ggplot(...) + ... + facet_wrap(facets, strip.position="right")

2
Actualización 2020 - ggplot 3.3 - facet_grid todavía se usa switch con argumentos de x, yo both.
nniloc

11

ahora puede usar facet_wrap(~var, strip.position = "bottom"), aunque por alguna razón esto da como resultado que las etiquetas se ubiquen sobre las etiquetas de marca de verificación del eje, en lugar de debajo (lo que creo que tendría más sentido), como puede ver en mi captura de pantalla de una pequeña parte de mi gráfico

captura de pantalla del gráfico

Si desea tener la etiqueta a continuación, debe hacerlo

ggplot(zzz, aes(x = c1, y = c2)) +
  facet_wrap(~ gp, scales = "free", nrow = 3, strip.position = "bottom") +
  geom_point() +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside"
  )

Como se ve aquí: https://github.com/tidyverse/ggplot2/issues/2622


-2

¡La respuesta es sí!

theme(strip.text=element_text(vjust=-10))

El número -10 está determinado por la escala y las unidades que está utilizando en su gráfico.


1
Ningún efecto para mí tampoco
geoteoría

Esto solo ajusta el texto, no la posición de las tiras en el gráfico.
Taylor White

1
Ningún efecto para mí tampoco, recomiendo usar el switchargumento, como se especificó anteriormente. Para responder específicamente al OP; switch = "x"moverá las etiquetas al final del gráfico.
EcologyTom

Gracias ! Su solución me ayudó a solucionar otro problema que tenía: tener las etiquetas alineadas a la izquierda (aunque usando hjust en lugar de vjust).
rvezy

-5

Para seguir con el uso del tema:

tema (strip.text = element_text (vjust = -10))

Asegúrese de que todas sus etiquetas tengan el mismo número de retornos de carro.

Label /n Facet /n Onev solo a un ritmo diferente al Label /n Facet Two.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.