Skip to content Skip to footer

同时展现两种数据的正确姿势!

当我们想同时展示两种数据,如销售量(千/月)和增长率(百分比)的变化情况,由于两组数据的数量级差别非常大,如果在一个y轴上展示则较小数量级的一组几乎无波动变化,此时可以绘制双坐标轴的图形,设置两个y轴,每个y轴都有自己的刻度范围,数据的波动就更加一目了然啦!

R语言plotrix包,可以帮助我们实现双坐标轴图形的绘制。

以7名患者的DNA测序的质控信息为例,绘制靶向捕获测序深度和重复率的关系:

代码语言:javascript复制#load plotrix

library(plotrix)

#Data preparation

ID=1:7

PID=paste("P",1:7,sep = "_")

Depth=seq(from=2000,to=800,by=-200)

DupRatio=c(0.31,0.45,0.37,0.64,0.35,0.56,0.42)

Data=data.frame(ID=ID,PID=PID,Depth=Depth, DupRatio= DupRatio)

#Plot

twoord.plot(lx =Data$ID, ly = Data$Depth, rx = Data$ID, ry = Data$DupRatio, lcol = 'steelblue', main = '整数和小数的双轴图', xlab = '患者编号', ylab = '测序深度x(绝对数值)', rylab = '重复率(0-1之间的小数)', type = c('bar','l'), xtickpos=as.numeric(Data$ID), xticklab = as.character(Data$PID))细说twoord.plot():

代码语言:javascript复制 #函数用法:

twoord.plot(lx,ly,rx,ry,data=NULL,main="",xlim=NULL,lylim=NULL,rylim=NULL,

mar=c(5,4,4,4),lcol=1,rcol=2,xlab="",lytickpos=NA,ylab="",ylab.at=NA,

rytickpos=NA,rylab="",rylab.at=NA,lpch=1,rpch=2,

type="b",xtickpos=NULL,xticklab=NULL,halfwidth=0.4,axislab.cex=1,

do.first=NULL,...)代码语言:javascript复制#参数详情

lx,ly,rx,ry:依次指第一组数据横坐标、该数据(左侧)纵坐标,第二组数据横坐标、该数据(右侧)纵坐标的值,注意必须是连续的值。

data:待绘制双轴图形的数据框

main:设置图形标题

xlim:限制横坐标值的范围

lylim,rylim:限制左、右纵坐标值的范围

mar:设置图形边界距,默认值为(5,4,4,4)

lcol,rcol:设置左右坐标轴的颜色,这样可以起到图例的作用

xlab:设置横坐标轴标签

lytickpos:设置左坐标轴刻度标签的位置

ylab:设置左坐标轴标签

ylab.at:设置左坐标轴标签位置

rytickpos:设置右坐标轴刻度标签的位置

rylab:设置右坐标轴标签

rylab.at:设置右坐标轴标签位置

lpch,rpch:设置左右坐标轴图形的外观

type:指定图形类型

xtickpos:设置横坐标轴刻度标签位置

xticklab:设置横坐标轴刻度标签

halfwidth:设置用户给定条形图宽度的一半

axislab.cex:设置坐标轴标签和刻度标签的大小

do.first:通过该参数可以往图形中添加背景色或网格