2012-05-11 18 views
34

me gustaría quitar las etiquetas de las facetas completamente para crear una especie de minigráfico efecto, como para el público las etiquetas son irrelevantes, lo mejor que puede llegar a es:eliminar completamente

library(MASS) 
library(ggplot2) 
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
    facet_wrap(~ID) + 
    theme(strip.text.x = element_text(size=0)) 

¿Puedo deshacerme del strip.background (ahora en blanco) completamente para dejar más espacio para las "sparklines"?

O, como alternativa, ¿existe una mejor forma de obtener este efecto "sparkline" para un gran número de series temporales de valores binarios como este?

Respuesta

55

Para v2.1.0 ggplot o superior, utilice element_blank() para eliminar elementos no deseados:

library(MASS) # To get the data 
library(ggplot2) 

qplot(
    week, 
    y, 
    data = bacteria, 
    group = ID, 
    geom = c('point', 'line'), 
    xlab = '', 
    ylab = '' 
) + 
facet_wrap(~ ID) + 
theme(
    strip.background = element_blank(), 
    strip.text.x = element_blank() 
) 

En este caso, el elemento que estamos tratando de eliminar se llama strip.

ggplot2 figure without panel titles


alternativo utilizando ggplot diseño Grob

En las versiones anteriores de ggplot (antes de v2.1.0), el texto tira ocupa filas en la disposición GTABLE.

element_blank elimina el texto y el fondo, pero no elimina el espacio ocupado por la fila.

Este código elimina las filas de la disposición:

library(ggplot2) 
library(grid) 

p <- qplot(
    week, 
    y, 
    data = bacteria, 
    group = ID, 
    geom = c('point', 'line'), 
    xlab = '', 
    ylab = '' 
) + 
facet_wrap(~ ID) 

# Get the ggplot grob 
gt <- ggplotGrob(p) 

# Locate the tops of the plot panels 
panels <- grep("panel", gt$layout$name) 
top <- unique(gt$layout$t[panels]) 

# Remove the rows immediately above the plot panel 
gt = gt[-(top-1), ] 

# Draw it 
grid.newpage() 
grid.draw(gt) 
+0

alguien más recibiendo '' Error al aplicar (strip_mat, 1, max_height): dim (X) debe tener una longitud positiva''? – PatrickT

4

Lo más cerca que puedo decir, la respuesta de arena es correcta, pero creo que vale la pena mencionar que parece que hay una pequeña diferencia de la anchura de una parcela sin facetas y el ancho de un diagrama con las facetas eliminadas.

No es obvio, a menos que lo esté buscando, pero si apila diagramas usando los diseños de vista que Wickham recomienda en su libro, la diferencia se hace evidente.

+1

¿Puede profundizar en esto con un ejemplo? – mnel

+0

Hmm. Veamos ... –

+0

Aquí vamos-- Pruebe [enlace] (http: // pastebin.com/xJedJr1b). Yo uso el dataset 'diamonds' de ggplot, así que debería funcionar para cualquiera. Observe que el margen derecho del gráfico facetado es ligeramente más estrecho que el gráfico no facetado. –

19

Estoy usando ggplot2 versión 1 y los comandos requeridos han cambiado. En lugar de

ggplot() ... + 
opts(strip.background = theme_blank(), strip.text.x = theme_blank()) 

ahora se utiliza

ggplot() ... + 
theme(strip.background = element_blank(), strip.text = element_blank()) 

Para más detalles véase la respuesta actualizada http://docs.ggplot2.org/current/theme.html

2

de arena parece buena, pero, posiblemente, ha sido invalidada por cambios a ggplot? De lo que puedo decir el siguiente código (una versión simplificada de la respuesta original de arena) reproduce gráfico original de Sean sin ningún espacio adicional:

library(ggplot2) 
library(grid) 
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
facet_wrap(~ID) + 
theme(strip.text.x = element_blank()) 

estoy usando ggplot 2.0.0.

Cuestiones relacionadas