展示二分类变量时,可以考虑作背靠背条形图(back-to-back barplot)来展示,会显得更加直观。下面介绍一个实例。
1.原始数据文件
内容如下:
2.R代码
a.读取原始数据
mydata <- read.table("rawdata.txt", header = TRUE, sep = "\t")
no <- nrow(mydata)
up <- mydata$up
down <- mydata$down
downmax <- ceiling(range(down)[2]/10)*10
upmax <- ceiling(range(up)[2]/10)*10
b.图形布局
par(mar=c(0.05, 25, 0.5, 1))
plot.new()
plot.window(xlim=c(-downmax, upmax), ylim=c(-1.5, no+4))
c.绘制图形主体
ticks <- seq(-downmax, upmax, 10)
y <- 1:no
h <- 0.3
lines(rep(0, 2), c(-1.5, no+1.5), col="white")
segments(-downmax, y, 0, y, lty="dotted")
rect(-down, y-h, 0, y+h, col="blue", border=NA)
rect(0, y-h, up, y+h, col="red", border=NA)
mtext(as.matrix(mydata$pathway), at=y, adj=1, side=2, las=2, cex=0.8)
par(cex.axis=0.5, mex=0.5)
axis(3, at=ticks, labels=abs(ticks), pos=no+1, cex.axis=0.8)
d.绘制说明文本
text((-downmax+upmax)/2, no+4, "Gene counts", pos=1, font=2, col="black")
text(-downmax+10, no+3, expression(NA %<-% down), pos=1, font=2, col="blue", cex=1.0)
text(upmax-10, no+3, expression(up %->% NA), pos=1, font=2, col="red", cex=1.0)