Cuadrícula mal mostrada usando ggplot2

Estoy tratando de trazar un objeto celeste en el cielo (básicamente con coordenadas equivalentes a latitud/longitud). Tracé con éxito todos mis puntos usando el "aitoff" proyección de la coord_map pero en este caso, la cuadrícula se muestra mal, es decir, todavía se muestran líneas horizontales residuales para latitudes distintas de cero junto con sus proyecciones correctas.

enter image description here

¿Cómo podría eliminar estas líneas?

Aquí hay un código que reproduce el comportamiento:

library(ggplot2)
library(mapproj)
sky2 = data.frame(RA=0, Dec=0)
skyplot2 <- qplot(RA,Dec,data=sky2,xlim=c(0,360),ylim=c(-89.999,89.999),
xlab="R.A.(°)", ylab="Decl. (°)",main="Source repartition on the sky")
skyplot2 + coord_map(projection="aitoff",orientation=c(89.999,180,0)) + 
scale_y_continuous(breaks=(-2:2)*30,limits=c(-89.999,89.999)) + 
scale_x_continuous(breaks=(0:8)*45,limits=c(0,360),
                   labels=c("","","","","","","","",""))

preguntado el 22 de mayo de 12 a las 18:05

2 Respuestas

Definitivamente, este es un error en ggplot2, ¿podría presentar este error? https://github.com/hadley/ggplot2/issues?state=open Archivado como un error.

Aquí hay un truco rápido y sucio.

f <- function(x, y, ...) {
    if (any(is.na(x))) {
    id <- rle(!is.na(x))$length
    id <- rep(seq_along(id), id)
    df <- data.frame(x, y, id)
    df <- df[order(df$id, df$x), ]
  } else if (any(is.na(y))) {
    id <- rle(!is.na(y))$length
    id <- rep(seq_along(id), id)
    df <- data.frame(x, y, id)
  }
  polylineGrob(df$x, df$y, id = df$id, gp = gpar(col = "white"))
}

skyplot2 <- qplot(RA,Dec,data=sky2,xlim=c(0,360),ylim=c(-89.999,89.999),
                  xlab="R.A.(°)", ylab="Decl. (°)",main="Source repartition on the sky")
skyplot2 + coord_map(projection="aitoff",orientation=c(89.999,180,0)) + 
  scale_y_continuous(breaks=(-2:2)*30,limits=c(-89.999,89.999)) + 
  scale_x_continuous(breaks=(0:8)*45,limits=c(0,360),
                     labels=c("","","","","","","","","")) +
                    opts(panel.grid.major = f)

enter image description here

Tenga en cuenta que esto puede funcionar solo con la proyección aitoff.

contestado el 24 de mayo de 12 a las 17:05

Solo necesitas agregar:

+ opts(axis.ticks = theme_blank())

contestado el 22 de mayo de 12 a las 23:05

Mmm. Eso elimina las marcas en la parte inferior de la figura, pero no las líneas horizontales adicionales (rectas) que el OP quiere eliminar. - Josh O'Brien

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.