2011-12-01 89 views
1

當使用ggplot在R中繪圖時,我注意到,有時如果默認情況下沒有在y軸上指定任何限制,繪圖將不會在y軸的底部有任何「0」標記(假定底部角落代表0)。此頁面上的第一個情節是一個很好的例子R和ggplot-刪除y軸上的「0」刻度標記

http://wiki.stdout.org/rcookbook/Graphs/Axes%20%28ggplot2%29

你可以看到右下角留空。這是我想要的。

但是,如果我指定y軸的極限,則始終顯示0。所以,如果我請使用

scale_y_continuous(limits=c(0,8) 

ylim(0,8) 

我得到那個小0和散列標記

所以,如果我已經設置像一個數據:

ByYear <- data.frame(V1 = c(2005,2006,2007,2008,2005,2006,2008,2006,2007,2005,2006,2007,2008), 
+      V2 = c(0,0.2,0,1.6,2,5,0,4,3,0,8,0,5), 
+      V3 = c('A','A','A','A','B','B','B','C','C','D','D','D','D')) 

並運行一個基本情節如

ggplot(data=ByYear,aes(x=V1,y=V2,group=V3))+geom_line()+geom_point(aes(shape=V3),size=3)+opts(panel.grid.major=theme_blank(),panel.grid.minor=theme_blank()) 

有沒有辦法讓第一個散列標記變爲空白?一個類似於

ylim(,8) #(Even though it does not work) 

我知道我可以使用

expand=c(0,0)) or yaxis="i" 

爲了使0減價至下角(這是更好),但唯一的問題是,因爲我有很多的零數據會切斷點形狀的底部,所以我仍然需要零點以下的一點點緩衝空間。

回答

4

我想你可能會尋找breaks說法scale_y_continuous

ggplot(data=ByYear,aes(x=V1,y=V2,group=V3)) + 
    geom_line() + 
    geom_point(aes(shape=V3),size=3) + 
    scale_y_continuous(breaks = 1:8) + 
    opts(panel.grid.major=theme_blank(),panel.grid.minor=theme_blank()) 

產生這樣的:

enter image description here

注意:由於0.9.2 opts版本已經replaced通過theme

+ theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())