2011-12-01 90 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())