2010-04-20 29 views
47

Estoy construyendo un diagrama de barras para el cual las barras son suficientes como indicaciones de la colocación horizontal (x), por lo que me gustaría evitar dibujar las líneas verticales superfluas.¿Cómo puedo suprimir las líneas verticales de la cuadrícula en un diagrama ggplot2?

Entiendo cómo diseñar las líneas de grilla menores y principales en opts(), pero no puedo entender cómo suprimir solo las líneas verticales de la cuadrícula.

library(ggplot2) 

data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4)) 

ggplot(data, aes(x, y)) + 
    geom_bar(stat = 'identity') + 
    opts(
    panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'), 
    panel.grid.minor = theme_line(colour = NA), 
    panel.background = theme_rect(colour = NA), 
    axis.ticks = theme_segment(colour = NA) 
) 

En este punto, es que parece que voy a tener que suprimir todas las líneas de división y luego atraerlos de nuevo con geom_hline(), que parece como una especie de dolor (también, no es del todo claro cómo puedo encontrar el tick/principales posiciones de la cuadrícula para alimentar a geom_hline().)

¡Cualquier pensamiento sería apreciado!

Respuesta

11

Try usando

scale_x_continuous (roturas = NULL)

Esto eliminaría todas las líneas de división verticales así como etiquetas tickmark eje x.

+4

Eso lo hizo, pero ahora, como ha notado, no tengo las etiquetas del eje x, que necesito - ¿Alguna idea de cómo volver a escribirlas? – Tarek

+1

geom_text (aes (label = x, y = -.5)) debería funcionar – learnr

+17

La nueva versión dice: 'Utilice breaks = NULL para eliminar las interrupciones en la escala. (Obsoleto, se utilizó por última vez en la versión 0.8.9) ' –

4

Esto le deja sólo con los puntos de datos:

ggplot(out, aes(X1, X2)) + 
    geom_point() + 
    scale_x_continuous(breaks = NULL) + 
    scale_y_continuous(breaks = NULL) + 
    opts(panel.background = theme_blank()) + 
    opts(axis.title.x = theme_blank(), axis.title.y = theme_blank()) 
95

A partir de ggplot2 0.9.2, esto se ha convertido mucho más fácil de hacer usando "temas". Ahora puede asignar temas por separado a panel.grid.major.x y panel.grid.major.y, como se muestra a continuación.

# simulate data for the bar graph 
data <- data.frame(X = c("A","B","C"), Y = c(1:3))  

# make the bar graph 
ggplot(data ) + 
    geom_bar(aes(X, Y)) + 
    theme(# remove the vertical grid lines 
      panel.grid.major.x = element_blank() , 
      # explicitly set the horizontal lines (or they will disappear too) 
      panel.grid.major.y = element_line(size=.1, color="black") 
    ) 

El resultado de este ejemplo es bastante feo aspecto, pero que muestra cómo eliminar las líneas verticales preservando al mismo tiempo las líneas horizontales y el eje X casillas de marcas.

Cuestiones relacionadas