查看原文
其他

每天学习一点R:25.坐标轴中断

红皇后学术 红皇后学术 2023-08-18

在处理数据时,我们经常会遇到个别数据的值与整体差别较大,导致图像绘制出来正常数据无法区分的情况,此时就需要用到坐标轴中断来实现不同尺度数据的同时展示。

在R中可以通过plotrix包实现坐标轴的中断。

散点图的坐标轴中断

通过plotrix包中的gap.plot绘制坐标轴中断的散点图,之后使用axis.break调整坐标中断的形式。

照例先介绍这两个绘图函数的详细参数。

gap.plot(x,y,gap,gap.axis="y",bgcol="white",breakcol="black",brw=0.02,xlim=range(x),ylim=range(y),xticlab,xtics=NA,yticlab,ytics=NA,lty=rep(1,length(x)),col=rep(par("col"),length(x)),pch=rep(1,length(x)),add=FALSE,stax=FALSE,...)

各参数意义:

  • x和y为绘图的数据;

  • gap为中断的范围;

  • gap.axis定义在哪个轴中断;

  • bgcol为背景颜色;

  • breakcol为中断标志颜色;

  • brw为中断相比于图像比例

  • xlim和ylim为图像的x和y轴范围;

  • xticlab和yticlab为x和y轴刻度的标签;

  • xtics和ytics为x和y轴刻度位置。

我们先来生成一组随机的绘图数据。

x <- c(1:15)y <- c(rnorm(5,mean = 1),rnorm(5,mean = 1)+10,rnorm(5,mean = 2))col <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)

首先画一个正常的图。

plot(x,y,col = col,pch = 16,xlab = "",ylab = "",main = "Plot")

接下来绘制坐标轴中断的图。

gap.plot(x,y,gap = c(4,8),col = col,pch = 16,xlab = "",ylab = "",main = "Gap plot")

gap.plot绘图的方法与正常的plot基本没有区别,只需要注意gap.axis和brw参数。

gap.axis确定中断的轴,默认为y轴,如果要中断x轴则设置为gap.axis = “x”

brw规定中断区域相对于图像整体的比例,默认为0.02

我们可以看到,坐标轴中断的默认形式时分成两个图,但是有时我们并不喜欢这种展示形式,这就需要用到另一个函数axis.break。

axis.break(axis=1,breakpos=NULL,pos=NA,bgcol="white",breakcol="black",style="slash",brw=0.02)

各参数意义:

  • axis定义中断哪个轴,1为横轴2为纵轴;

  • breakpos在什么地方进行中断(按照轴的单位);

  • pos在什么位置进行中断(按照轴的比例);

  • bgcol背景颜色;

  • breakcol中断标志的颜色

  • style中断的方式,gap、slash或zigzag;

  • brw中断相比于图形宽度的比例。

⚠️axis.break中axis、breakpos和brw要与gap.plot一致

axis.break(2,breakpos = c(4,8),breakcol="snow",style="gap")#去掉中间的那两道横线axis.break(2,breakpos = 4,breakcol="black",style="slash")#在左侧Y轴把gap位置换成slashaxis.break(4,breakpos = 4,breakcol="black",style="slash")#在右侧Y轴把gap位置换成slash


条形图的坐标轴中断

使用gap.barplot绘制中断的条形图,用法几乎和gap.plot一样。

gap.barplot(y,gap = c(4,8),col = col,xlab = "",ylab = "",ylim = c(0,12),main = "Gap barplot")axis.break(2,breakpos = c(4,8),breakcol="snow",style="gap")#去掉中间的那两道横线axis.break(2,breakpos = 4,breakcol="black",style="slash")#在左侧Y轴把gap位置换成slashaxis.break(4,breakpos = 4,breakcol="black",style="slash")#在右侧Y轴把gap位置换成slash

扩展阅读




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存