R绘图基础(9)坐标中断(axis breaks)

R当中的坐标中断一般都使用plotrix库中的axis.break(), gap.plot(), gap.barplot(), gap.boxplot()等几个函数来实现,例:

R绘图基础(9)坐标中断(axis breaks)-图片1

gap plot

  1. > library(plotrix)
  2. > opar<-par(mfrow=c(3,2))
  3. > plot(sample(5:7,20,replace=T),main="Axis break test",ylim=c(2,8))
  4. > axis.break(axis=2,breakpos=2.5,style="gap")
  5. > axis.break(axis=2,breakpos=3.5,style="slash")
  6. > axis.break(axis=2,breakpos=4.5,style="zigzag")
  7. > twogrp<-c(rnorm(5)+4,rnorm(5)+20,rnorm(5)+5,rnorm(5)+22)
  8. > gap.plot(twogrp,gap=c(8,16,25,35),
  9. + xlab="X values",ylab="Y values",xlim=c(1,30),ylim=c(0,25),
  10. + main="Test two gap plot with the lot",xtics=seq(0,30,by=5),
  11. + ytics=c(4,6,18,20,22,38,40,42),
  12. + lty=c(rep(1,10),rep(2,10)),
  13. + pch=c(rep(2,10),rep(3,10)),
  14. + col=c(rep(2,10),rep(3,10)),
  15. + type="b")
  16. > gap.plot(21:30,rnorm(10)+40,gap=c(8,16,25,35),add=TRUE,
  17. + lty=rep(3,10),col=rep(4,10),type="l")
  18. > gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),
  19. + ylab="Group values",main="Barplot with gap")
  20. > gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),
  21. + ylab="Group values",horiz=TRUE,main="Horizontal barplot with gap")
  22. > twovec<-list(vec1=c(rnorm(30),-6),vec2=c(sample(1:10,40,TRUE),20))
  23. > gap.boxplot(twovec,gap=list(top=c(12,18),bottom=c(-5,-3)),
  24. + main="Show outliers separately")
  25. > gap.boxplot(twovec,gap=list(top=c(12,18),bottom=c(-5,-3)),range=0,
  26. + main="Include outliers in whiskers")
  27. > par(opar)

从图像效果上来看,这样的坐标中断只能说实现了坐标中断,但效果上是非常一般的。甚至远不如excel, openoffice当中出图效果好。为此,我们需要对plotrix库中的gap.plot做出修改,以达到满意的效果。

最简单的修改办法就是在使用了gap.plot, gap.barplot, gap.boxplot之后重新使用axis.break来修改中断类型,使得看上去美一点。

  1. > axis.break(2,from,breakcol="snow",style="gap")
  2. > axis.break(2,from*(1+0.02),breakcol="black",style="slash")
  3. > axis.break(4,from*(1+0.02),breakcol="black",style="slash")
  4. > axis(2,at=from)

使用上面的办法可以绘制出双反斜线中断,并可以视实际情况加油断点起止位置。

R绘图基础(9)坐标中断(axis breaks)-图片2

改进的gap.plot

  1. > library(plotrix)
  2. > x<-c(1:5,6.9,7)
  3. > y<-2^x
  4. > from<-33
  5. > to<-110
  6. > opar<-par(mfrow=c(2,2))
  7. > plot(x,y,type="b",main="normal plot")
  8. > gap.plot(x,y,gap=c(from,to),type="b",main="gap plot")
  9. > axis.break(2,from,breakcol="snow",style="gap")
  10. > axis.break(2,from*(1+0.02),breakcol="black",style="slash")
  11. > axis.break(4,from*(1+0.02),breakcol="black",style="slash")
  12. > axis(2,at=from)
  13. > gap.barplot(y,gap=c(from,to),col=as.numeric(x),main="barplot with gap")
  14. > axis.break(2,from,breakcol="snow",style="gap")
  15. > axis.break(2,from*(1+0.02),breakcol="black",style="slash")
  16. > axis.break(4,from*(1+0.02),breakcol="black",style="slash")
  17. > axis(2,at=from)
  18. > gap.barplot(y,gap=c(from,to),col=as.numeric(x),horiz=T,main="Horizontal barplot with gap")
  19. > axis.break(1,from,breakcol="snow",style="gap")
  20. > axis.break(1,from*(1+0.02),breakcol="black",style="slash")
  21. > axis.break(3,from*(1+0.02),breakcol="black",style="slash")
  22. > axis(1,at=from)
  23. > par(opar)

 

发表评论

匿名网友

拖动滑块以完成验证
加载中...