2012-05-22 72 views
8

我想繪製天空上的天體(基本上座標相當於經度/緯度)。我使用coord_map函數的"aitoff"投影成功繪製了所有點,但在這種情況下,網格顯示不良,即仍然顯示非零等於零的緯度的殘餘水平線及其正確投影。使用ggplot2嚴重顯示網格

enter image description here

我怎麼能刪除這些行?

這裏是再現行爲代碼:

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("","","","","","","","","")) 

回答

4

無疑這是GGPLOT2個bug,因此請你提交這個bug? https://github.com/hadley/ggplot2/issues?state=openFiled as a bug

這是一個快速和骯髒的黑客攻擊。

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

注意,這可能僅與ai​​toff投影工作。

2

你只需要添加:

+ opts(axis.ticks = theme_blank()) 
+0

嗯。這將擺脫圖中底部的刻度線,但不是OP想要移除的額外(直線)水平線。 –

+0

哦woops。沒有仔細閱讀這個問題。 –