每天学习一点R:25.坐标轴中断
在处理数据时,我们经常会遇到个别数据的值与整体差别较大,导致图像绘制出来正常数据无法区分的情况,此时就需要用到坐标轴中断来实现不同尺度数据的同时展示。
在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位置换成slash
axis.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位置换成slash
axis.break(4,breakpos = 4,breakcol="black",style="slash")
#在右侧Y轴把gap位置换成slash
扩展阅读