2015-11-13 26 views
4

這個問題不是關於控制軸線限制(我認爲),而是關於控制軸線本身的長度。我正在嘗試製作一個ggplot(以便我可以利用其良好的刻面功能),它類似於手動添加軸的基本R繪圖。這些軸只能延伸到最後一個軸標籤。如何控制ggplot中軸線的長度?

一些設置數據,我試圖模仿情節的基礎R類型:

library("ggplot2") 
library("cowplot") 
library("grid") 

set.seed(5) 
x <- rnorm(10) 
y <- rnorm(10) 
D <- data.frame(x, y) 

plot(x, y, axes = FALSE) 
axis(1) 
axis(2) 

Base R plot

ggplot(D, aes(x, y)) + 
    geom_point() 

默認的變化,從cowplot包ggplot得到相當接近:

enter image description here

但是我怎麼能告訴ggplot只繪製直到最後一個軸標籤的直線,即使點位於該值之外(如在基本R圖中)?

+0

我不認爲有修改的軸心線的長度內置方式。您最好的選擇是關閉軸線並使用'annotate'(或'cowplot :: draw_line')繪製您想要的自定義線條。 – Gregor

+0

不知道我是如何錯過的。投票結束我自己的問題。 – kmm

回答

7

那麼,@Gregor在我正在研究這個時發表了他的評論,所以這裏是實現。僅出於說明目的,註釋的軸以紅色呈現,以使它們明顯與標準軸線分開添加。如果您要製作一堆這樣的圖,您還可以添加一些邏輯,以編程方式確定annotatecoord_cartesian的x和y限制。

my_theme = list(theme_bw(), 
        theme(panel.border=element_blank(), 
         panel.grid.major=element_blank(), 
         panel.grid.minor=element_blank()), 
        labs(y="",x="")) 

    ggplot(D, aes(x,y)) + 
    geom_point() + 
    coord_cartesian(xlim=c(-1.4,1.4), ylim=c(-2.4,1.4)) + 
    my_theme + 
    annotate(x=-1.4, xend=-1.4, y=-2, yend=1, colour="red", lwd=0.75, geom="segment") + 
    annotate(x=-1, xend=1, y=-2.4, yend=-2.4, colour="red", lwd=0.75, geom="segment") 

enter image description here