在ggplot2 0.9.0中使用axis.line仅删除y轴

时间:2012-07-09 20:48:49

标签: r graph ggplot2

  

可能重复:
  can I separately control the x and y axes using ggplot?

我看到之前的帖子描述了如何执行此操作(can I separately control the x and y axes using ggplot?) - 但它在ggplot 0.9.0中不起作用。任何想法如何我只能删除y轴线,而不是x轴线。 axis.line选项不允许在两个轴之间进行任何区分。

 u<-expand.grid(temp=seq(0,100,10),hum=c(20,90),delta=as.factor(seq(0,10,by=5)))

u$model<-exp(u$temp*log(0.88)+u$hum*log(1.01)+as.numeric(u$delta)*log(1.1)) 
u2<-subset(u,hum==20)

u4<-subset(u,hum==90)
pl<-ggplot()+
  geom_line(data=u2,aes(x=u2$temp,y=u2$model,colour=u2$delta,group=u2$delta))+
  geom_line(data=u4,aes(x=temp,y=model,colour=delta,group=delta))

pl+theme_bw()+
  opts(panel.grid.minor=theme_blank(),
       panel.grid.major=theme_blank(),
       legend.key=theme_blank(),
       panel.border=theme_rect(colour=NA),
       axis.line=theme_segment(colour='grey',size=1))

现在 - 我怎么才能拥有x轴而不是y轴?

早先的帖子推荐

grid.remove(gPath("axis_v", "axis.line.segments"), grep=TRUE)

导致

  

removeDLFromGPath出错(gPath,name,strict,greppath,grepname,   global,:找不到gPath(axis_v :: axis.line.segments)

//中号

1 个答案:

答案 0 :(得分:1)

这是一个可能有用的解决方法。严格使用coord_cartesian()设置绘图限制,然后手动添加x轴线。以编程方式计算y轴范围应该不会太难。

opts(axis.line=theme_blank()) +
coord_cartesian(ylim=c(-0.05, 3.3)) + 
geom_hline(yintercept=-0.05, colour="grey", size=1.5)