2010-11-17 16 views
5

Me gustaría agregar una cuadrícula de fondo al centro de la gráfica y luego ocultar las líneas de cuadrícula estándar. Los puntos de esquina de la cuadrícula se almacenan en el marco de datos pts y he intentado usar geom_tile, pero no parece utilizar los puntos especificados. Gracias de antemano por tu ayuda.¿Cómo puedo agregar una cuadrícula de fondo usando ggplot2?

library(ggplot2) 
pts <- data.frame(
     x=c(170,170,170,177.5,177.5,177.5,185,185,185), 
     y=c(-35,-25,-15,-35,-25,-15,-35,-25,-15)) 
ggplot(quakes, aes(long, lat)) + 
    geom_point(shape = 1) + 
    geom_tile(data=pts,aes(x=x,y=y),fill="transparent",colour="black") + 
    opts(
     panel.grid.major=theme_blank(), 
     panel.grid.minor=theme_blank() 
    ) 

Respuesta

6

puede especificar manualmente los saltos:

ggplot(quakes, aes(long, lat)) + geom_point(shape = 1) + 
    scale_x_continuous(breaks = c(170, 177.5, 185)) + 
    scale_y_continuous(breaks = c(-35, -25, -15)) + 
    opts(panel.grid.minor = theme_blank(), 
     panel.grid.major = theme_line("black", size = 0.1)) 

entonces, es esto lo que quieres?

pts <- data.frame(x=c(170, 170, 170, 170, 177.5, 185), 
        y=c(-35, -25, -15, -35, -35, -35), 
        xend=c(185, 185, 185, 170, 177.5, 185), 
        yend=c(-35, -25, -15, -15, -15, -15)) 
ggplot(quakes, aes(long, lat)) + geom_point(shape = 1) + 
    geom_segment(data=pts, aes(x, y, xend=xend, yend=yend)) + 
    opts(panel.grid.minor = theme_blank(), 
     panel.grid.major = theme_blank()) 
+1

En realidad, me gustaría tener la cuadrícula "flotante" en el fondo (ver mi ejemplo). Gracias sin embargo. – user338714

+0

hola, luego he actualizado el ejemplo. véase más arriba. – kohske

+0

Esto es exactamente lo que estaba buscando, gracias. También encontré que geom_path funcionaría, pero es bastante engorroso trazar todos los puntos a lo largo de la ruta: pts <- data.frame (x = c (170,170,170,177.5, 177.5,177.5,185,185,185,177.5,170,170,177.5,185,185,177.5,170), y = c (-35, -25, -15, -15, -25, -35, -35, -25, -15, -15, -15, -25, -25, -25, -35, - 35, -35)). – user338714

1

No es elegante, pero esto es algo rápido y sucio que se me ocurrió. Desafortunadamente no puedo detener la línea en un cierto punto, simplemente llega hasta el borde.

ggplot(quakes, aes(long, lat)) + geom_point(shape = 1) 
+ opts(panel.grid.major=theme_blank(), 
     panel.grid.minor=theme_blank()) 
+ geom_vline(aes(xintercept =seq(165,185,by=5))) 
+ geom_hline(aes(yintercept=seq(-35,-15,by=5))) 
+0

Si está editando una figura como esta para una publicación, siempre puede guardar como eps, luego edite las líneas adicionales en Adobe Illustrator. Eso es lo que yo haría. – Maiasaura

Cuestiones relacionadas